我将 Spring MVC 的 SimpleFormController 与 Spring MVC 的表单 JTL 结合使用来创建一个表单来编辑通用对象。
在我的表单上,我有一个下拉菜单,用户可以通过下拉菜单指定服务器。
<form:form commandName="generic">
<form:select path="server">
<form:options items="${servers}" itemValue="id" itemLabel="name"/>
</form:select>
</form:form>
此处的服务器通过对所有可用服务器的数据库调用进行传播。server 是一个 Server ORM pojo,它是另一个 ORM pojo(通用)的子对象,用作我的表单支持对象。
我的目标是更改 Generic 的服务器引用,它在数据库级别表示为服务器表的外键。
我使用 JPA 作为我的持久层,并使用 JPA 生成的实体类作为我的 ORM pojos。
不幸的是,当我的表单提交时,这似乎没有正确绑定,因为它无法从字符串转换为服务器。
Field error in object 'generic' on field 'server': rejected value [1]; codes [typeMismatch.generic.server,typeMismatch.server,typeMismatch.com.generic.orm.jpa.Server,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [generic.server,server]; arguments []; default message [server]]; default message [Failed to convert property value of type [java.lang.String] to required type [com.generic.orm.jpa.Server] for property 'server'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [com.generic.orm.jpa.Server] for property 'server': no matching editors or conversion strategy found], generic=com.generic.orm.jpa.generic[id=3]} and static attributes {}
我一直在寻找一个如何在没有运气的情况下完成此任务的示例。我相信我需要覆盖 SimpleFormController 中的某些内容,就像我在这个问题中所做的那样,但是 Spring MVC 的文档对细节很清楚。有谁可以帮我离开这里吗?