您好,您只想在Spring MVC Controller中提出一个设计问题。
请求网址将具有多个参数,例如。类型= v1&par2 = v2&par3 = v3&par4 = v4。在这四个参数中,“类型”将决定交易模式,其他参数将成为每个交易的输入。

您将如何组织控制器代码?
传统上,您可能会编写以下内容,

if (type.equals('1'))
{
   callMode1(par2,par3, par4);
}
else if (type.equals('2')
{
    callMode2(par2, par3, par4);
}
else if (type.equals('3'))
{
    callMode3(par2, par3, par4);
}


callMode1-callMode2是控制器中的私有方法。

只是想知道是否还有更好的方法在这里编写代码?

提前致谢!

最佳答案

您应该为每种“类型”创建一种请求处理方法。每个方法都需要一个@ RequestMapping批注。

RequestMapping批注提供名为params的属性:


  抽象String []参数
  
  映射请求的参数,
  缩小主映射。
  
  任何环境的格式相同:
  “ myParam = myValue”样式的序列
  表达式,仅具有请求
  如果找到每个这样的参数,则映射
  具有给定的价值。表达方式
  可以通过使用“!=”来否定
  运算子,例如“ myParam!= myValue”。
  “ myParam”样式表达式也
  支持,具有这样的参数
  出现在请求中(允许
  具有任何价值)。最后,
  “!myParam”样式表达式表示
  指定的参数不是
  应该存在于请求中。


然后,您可以通过以下方式实现它:

@Controller
@RequestMapping( what ever you have in common )
class Handler {

  @RequestMapping(params={"type=1"})
  public void mode1() {
     ...
  }

  @RequestMapping(params={"type=2"})
  public void mode2() {
     ...
  }
}

10-08 16:19