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 はサーバー ORM pojo です。これは、フォーム バッキング オブジェクトとして機能する別の ORM pojo (ジェネリック) のサブオブジェクトです。
ここでの私の目標は、データベース レベルでサーバー テーブルへの外部キーとして表される Generic のサーバー参照を変更することです。
JPA を永続化レイヤーとして使用し、JPA によって生成されたエンティティ クラスを ORM pojo として使用しています。
残念ながら、文字列からサーバーに変換できないため、フォームの送信時にこれが適切にバインドされていないようです。
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 のドキュメントでは詳細が軽視されています。誰か助けてくれませんか?