我有一个查询。我在@ModelAttribute
中的函数上使用formController
。
@ModelAttribute("modelAttrVar")
public ModelAttr function(){
ModelAttr obj = new ModelAttr();
//...code
return obj;
}
但是这个模型属性没有添加到我正在返回的ModelAndView中.....
public ModelAndView func2(){
ModelAndView obj = new ModelAndView();
obj.addAttribute("variableName" , value);
obj.setViewName("viewName");
return obj;
}
现在,当我看到jsp时,模型属性变量modelAttrVar
在jsp中可用并且正在给出值。怎么??
请帮助!!
答案 0 :(得分:0)
有些事情不明确!
@ModelAttribute
注释用于将jsp中的表单绑定到控制器,以便在控制器中提供在html表单中编写的所有字段。
What is @ModelAttribute in Spring MVC?
因此,在发布请求(表单提交)之后,基本上使用@ModelAttribute
注释的方法应该用作landing point
方法。
让我们举一个例子,你有一个带有两个变量的POJO:
public class ModelAttrExample {
String name;
String lastName;
///getter and setter...
}
JSP indexForm.jsp
<form:form action="/greeting" >
<form:input path="name" />
<form:input path="lastName" />
<input type="submit" value="Submit" />
</form:form>
和一个SpringController
@Controller
public class GreetingController {
@RequestMapping(value="/greeting", method=RequestMethod.GET)
public String greetingForm(Model model) {
model.addAttribute("", new ModelAttrExample ());
return "indexForm";
}
@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greetingSubmit(@ModelAttribute ModelAttrExample example, Model model) {
example.getName();//same form value
example.getLastName(); //same form value
//do your logic here...
}
}
提交表单后,将触发greetingSubmit()
方法,并且该方法中将提供填充了表单数据的ModelAttrExample
实例。
so ... @ModelAttribute用于从html表单字段中获取值,并将此数据放在类实例变量中。
我建议你从Spring开始学习本教程, 它写得很好,很容易理解
如果您需要更多信息,请不要犹豫:)