Java - Spring MVC - 从表单提交中自动填充对象?

时间:2010-02-05 05:21:28

标签: java spring spring-mvc

在控制器的ASP.NET MVC中,我可以让我的模型中的对象成为我的一个方法中的参数,并且由该方法处理的表单提交将自动填充该对象。

例如:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(User u){...}

将从表单提交中自动填充用户对象。

有没有办法让你使用Spring MVC自动发生这种情况,如果有,我该怎么做?

3 个答案:

答案 0 :(得分:3)

在Spring MVC中(使用基于Spring MVC 2.5+注释的配置),它看起来完全相同:

@RequestMapping(method = RequestMethod.POST)
public ModelAndView edit(User u) { ... }

将自动填充User对象。您还可以使用@ModelAttribute注释显式指定相应模型属性的名称(默认情况下,属性名称是参数的类名,首字母为decapitalized,即“user”)

... (@ModelAttrbiute("u") User u) ...

答案 1 :(得分:1)

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/portlet/mvc/SimpleFormController.html#onSubmitAction(java.lang.Object)

创建一个Form Controller,例如PriceIncreaseFormController并使其扩展SimpleFormController

覆盖方法public ModelAndView onSubmit(Object command) 上面有很多变种。寻找适合您需求的正确方法。对于简单流程,上述方法应该足够了。

在方法内部,您可以对命令进行类型转换并获取Command类。

commandObj = ((PriceIncrease) command)

commandObj将使用spring填充参数。

在你的springapp-servlet.xml中你应该告诉spring关于PriceIncrease命令类的内容,你也应该为你的命令类创建一个POJO。

<bean name="/priceincrease.htm" class="springapp.web.PriceIncreaseFormController">
    <property name="commandClass" value="springapp.service.PriceIncrease"/>

...

答案 2 :(得分:0)

在Servlet中没有,但绝对是在Spring MVC中。请查看web framework文档。

特别是Section 13.11.4,第9个要点。