Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spring控制器方法中使ModelAttribute可选_Java_Spring_Spring Mvc_Model View Controller - Fatal编程技术网

Java 在Spring控制器方法中使ModelAttribute可选

Java 在Spring控制器方法中使ModelAttribute可选,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,我有一个控制器方法定义如下- @RequestMapping(method = RequestMethod.POST, value="/callMe") public String myMethod(@ModelAttribute MyClass myObj, Model model) { //Do something } 即使我没有传递ModelAttribute myObj,我如何使上面的控制器方法被调用 我不想在没有它的情况下创建另一个控制器并复制功能。模型属性已经是可选的。即使

我有一个控制器方法定义如下-

@RequestMapping(method = RequestMethod.POST, value="/callMe")
public String myMethod(@ModelAttribute MyClass myObj, Model model) {
    //Do something
}
即使我没有传递ModelAttribute myObj,我如何使上面的控制器方法被调用


我不想在没有它的情况下创建另一个控制器并复制功能。

模型属性已经是可选的。即使不传递模型属性,也会创建myObj。所以检查

if(myObj == null){
   //Do method1
}else{
  //Do method2
}
这是行不通的

试试这个。在myClass中创建一个布尔值,如下所示

private Boolean isGotMyObj = false;
<input type="hidden" value="1" name="isGotMyObj" />
在jsp(提交模型属性)中添加如下隐藏输入

private Boolean isGotMyObj = false;
<input type="hidden" value="1" name="isGotMyObj" />

如果您需要一个有模型和没有模型的,并且具有相同的功能,您可能需要重新考虑(部分)您的设计。此外,模型属性已经是可选的,将创建一个新实例(取决于您最初创建/存储模型属性的方式)