您好,您只想在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() {
...
}
}