我有一个控制器方法定义如下 -
@RequestMapping(method = RequestMethod.POST, value="/callMe")
public String myMethod(@ModelAttribute MyClass myObj, Model model) {
//Do something
}
即使我没有传递ModelAttribute myObj,如何调用上述控制器方法。
我不想在没有它的情况下创建另一个控制器并复制功能。
答案 0 :(得分:2)
模型属性已经是可选的。即使您没有传递模型属性,也会创建myObj。所以检查
if(myObj == null){
//Do method1
}else{
//Do method2
}
无效。
试试这个。在myClass中创建一个像这样的
的布尔值private Boolean isGotMyObj = false;
在你的jsp中(提交模型属性)添加一个像这样的隐藏输入
<input type="hidden" value="1" name="isGotMyObj" />
然后在控制器中执行此操作
@RequestMapping(method = RequestMethod.POST, value="/callMe")
public String myMethod(@ModelAttribute MyClass myObj, Model model) {
if (myObj.getIsGotMyObj()){
//Got model attribute
//Method 1
}else{
//Method 2
}
return "callme";
}