我有一个带有模型属性的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。有人知道哪个是正确的吗?