@ModelAttribute spring mvc portlets和ajax表单提交

抱歉我的英语不好。 我脑子里有很多事情让我感到困惑。 我想将表单提交的值作为@ModelAttribute来处理,这首先使我感到困惑。 不使用@ModelAttribute我很好,并且一切都运行得很好。

我的要求是在portlet和spring mvc 3.0注释中处理ajax表单提交

forms我有

 <form id="User> 
First Name:
Last Name:
Address 1:
Address 2:
Zipcode
 

我使用以下jQuery将表单作为ajax调用提交

 $('#submit').on('click',function() { var fname = $('#fname').val(); var lname = $('#lname').val(); var address_1 = $('#address_1').val(); var address_2 = $('#address_2').val(); var zipcode = $('#zipcode').val(); $.ajax({ type: "POST" url: "" data: {fname: fname, lname: lname, address_1: address_1, address_2: address_2, zipcode: zipcode } success: function(data) { if(data == "success") { $('#showError').hide(); } else { $('#showError').show(); } } }) }); 

我有以下控制器来处理ajax调用

 @Controller @RequestMapping("VIEW") public class UserController { @ResourceMapping("addUser") public String addUser(ResourceRequest request, ResourceResponse response) { String fName = request.getParameter("fname"); String lName = request.getParameter("lname"); String address_1 = request.getParameter("address_1"); String address_2 = request.getParameter("address_2"); String zipcode = request.getParameter("zipcode"); // I do the processing of the form and add the user attributes to the database. } } 

我创建了一个User类,我想使用@ModelAttribute来设置/获取值。 我已经通过许多链接试图找出使用它。 其中一个示例使用表单taglib。 我有jQuery将表单作为ajax调用提交,我不确定是否将表单更改为此模式会破坏我的代码。

  
First Name
Last Name
Email
Telephone

谢谢您的帮助!

为了使@modelAttribute正常工作,我认为你需要在form标签中添加一个modelAttribute属性,以便将ModelAttribute映射到用户:

  

我在这个答案中是否足够使用“属性”这个词了吗?

您最终可能希望使用Command或FormBackingObject填充表单,而Command或FormBackingObject也可以是User的实例。 在这种情况下,您可以使用commandName属性代替modelAttribute,它会将表单映射到User for population,并将User映射到控制器上的@ModelAttribute注释。

我假设您可能正在使用名为User.class的Model类使用@SessionAttributes(types = User.class)注释您的控制器类@SessionAttributes(types = User.class)使用@ModelAttribute("")注释您的资源映射方法用户用户

在你的JSP中,

   ....
First Name

在资源映射方法中,您可以使用以下代码访问表单数据

  @ResourceMapping("addUser") public String addUser(ModeAttribute("") User user ,ResourceRequest request, ResourceResponse response) { String fName = user.getFirstName(); ... // I do the processing of the form and add the user attributes to the database. }