在Spring MVC中提交带有嵌套对象的模型属性

时间:2018-12-18 00:22:58

标签: java spring spring-mvc

我有一个带有模型属性的spring mvc表格。该模型内部有一个嵌套的对象,称为地址。当我提交表单时,所有非嵌套字段都将在模型中很好地填充,但是我收到了地址的类型不匹配错误。

这是错误:

java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'com.sample.types.Address' for property 'address': no matching editors or conversion strategy found

使用表单填充视图的控制器正在将人对象放入MV,这是JSP中的表单:

<form:form id="formId"
           method="POST"
           action="/submit"
           modelAttribute="person">

    <form:hidden path="name"/>
    <form:hidden path="age" />
    <form:hidden path="address"/>

</form:form>

我可以在带有表单的页面上看到from标记被转换为this:

<input id="address" name="address" type="hidden" value="Address(line1=123 fake street, line2=null, line3=null, city=null, state=null, country=null, postalCode=null, addressId=123456)"/>

从错误中我得到的提示是,我可能需要定义一些内容来告诉Spring如何将该字符串转换为Address对象。那是对的还是其他错误?在哪里可以找到有关如何执行此操作的文档?

编辑,看来我正在寻找Spring格式化程序:https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/spring-define-formatter.html,但是似乎有多种方法可以做到这一点。转换器vs格式器vs PropertyEditor。有人知道哪个是正确的吗?

0 个答案:

没有答案