我有一个POJO,我在JSP表单中成功使用。我可以显示表单,并可以将结果发回。这是modelAttribute bean
public class FooAdminWebDTO implements Serializable {
private static final long serialVersionUID = -5296961362891142744L;
private List<FooDTO> FooDTOList;
private String success = "success"; //..etc
除了我的JSP页面之外,这是一个:
<form:form method="post" class="form-horizontal" id="viewForm"
action="${pageContext.request.contextPath}/FooAdmin/saveFoo" modelAttribute="FooAdminWebDTO">
<div class="form-group">
<form:label class="col-sm-2" path="FooDTO" for="FooDTO" required="true">XYZ:</form:label>
<form:input class="col-sm-5" path="FooDTO" id="FooDTO" type="number" value="${FooAdminWebDTO.FooDTO.FooXYZ}" required="true"/>
</div>
<div class="form-group">
<form:label class="col-sm-2" path="success" for="success" required="true">Success:</form:label>
<form:input class="col-sm-5" path="success" id="success" type="text" value="SUCCESS" required="true"/>
</div>
问题出在我的POST区域。我成功地使用了正确的控制器方法:
@RequestMapping(value = "/FooAdmin/saveFoo", method = RequestMethod.POST)
public ModelAndView saveFooByID(@ModelAttribute("FooAdminWebDTO") FooAdminWebDTO s, BindingResult bindingResult) {
return new ModelAndView();
}
但是,正如预期的那样,我只看到成功字段的内容被Spring填充。成功字段是一个简单的字符串。 (所有其他复杂字段均为空)。
这是对象:FooDTO:
@JavascriptMappable
public class FooDTO implements Serializable {
private static final long serialVersionUID = -5974170234812308892L;
private String FooDescription;
private int additionQuantity;
等。
有人可以指导我如何做到这一点吗?我使用XML进行配置,所以任何涉及配置的答案,请记住这一点。我有很深的嵌套对象,需要一种方法将我的对象绑定到传入的POST对象。
谢谢。
答案 0 :(得分:0)
您在路径中的路径值:输入应映射到您要在对象中填充的属性。
e.g。
对于ProductAdminWebDTO.ProductDTO.productPartNumber的输入标记,路径应该类似于path="productDTO.productPartNumber"
您可以在http://docs.spring.io/spring/docs/current/spring-framework-reference/html/view.html#view-jsp-formtaglib-formtag找到更多信息
或form binding的简单解释。在您的情况下,您需要访问嵌套对象,就像显示时一样,使用.
答案 1 :(得分:0)
回顾一下HttpMessageConverter
负责将HTTP请求消息转换为一个相关的java对象。在我们的例子中,想要在发出请求时将JSON转换为java对象。 Spring将专门查找与mime类型关联的HttpMessageConverter
以执行转换。
您必须将jackson依赖项添加到项目中,并在spring中注册为消息转换器。
检查一下:Spring 3.0 making JSON response using jackson message converter
答案 2 :(得分:0)
发现错误。这是一块JQuery
$('#viewForm input').attr("disabled", true);
$('#viewForm select').attr("disabled", true);
我在JSP的其他地方使用它来使字段不可编辑。我忘了重新启用表单,这就是为什么它没有正确提交。感谢那些试图提供帮助的人。