@ModelAttribute如何将数据发送到jsp

时间:2016-03-24 10:29:54

标签: jsp spring-mvc modelattribute model-view

我有一个查询。我在@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中可用并且正在给出值。怎么??

请帮助!!

1 个答案:

答案 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开始学习本教程, 它写得很好,很容易理解

如果您需要更多信息,请不要犹豫:)