どのように私は春のWebフロー2でカスタムコンバータを書くのですか?
-
13-09-2019 - |
質問
私は春のMVCやHibernateを使ったWebフロー2.0.7を使用しています。
私の問題は私のカスタムタイプのカスタム・コンバータと私のコンバータ内からデータベース接続についてです。
のは、私はタイプの人と人のは、私のカスタムタイプのタイトルの分野を持っており、すべてがのタイトルを持っているとしましょうの私のデータベースに既に存在しています。今、私は、ユーザーが選択を含め、の人のインスタンスを読み込むことが可能なHTMLフォームを、持っているのタイトルの選択]ドロップダウンボックスでます。
フロー定義では、私が得るすべてののタイトルのデータベースから、彼らはの文字列にのタイトルの変換、カスタムコンバータを使用して、ドロップダウンボックスに表示されていますem>の、後で戻っにのタイトルの
私の質問から戻って変換する処理については列から正しいタイトルのオブジェクトへの(I素子上の値として設定されたデータベースID、です)私のデータベース。基本的には:?どのようにそれを行うには、
これまでのところ、私は、データベースへのアクセスを得るために、私のコンバータに注入titleManagerを取得できませんでした。このシナリオは、春のWebフローフォーラムの中でコメントしました。別の解決策は、ビューをレンダリングする前に、のタイトルのキャッシュし、何らかの形で取得するかもしれない、メモリ内ののタイトルのフォームが投稿された後。
私は誰かが私を啓発することができれば、どのようにデータバインディングのこの種を処理するために、それを本当にいただければ幸いです。私はそれがこれまでに取り組んで取得することができませんでしたので、私はそれ以外の場合は素晴らしいwebflowsのうち、最小限の使用を取得します。
私はすでに掲載のWebフローボードの上のスレッドが、それでも私は自分で見つけることができません最高のpraticeを、行方不明ます。
ありがとうございました!
ヴォルフラム
解決
私はこれを行うために使用します。 基本的に私はタイトルのリストをロードして、私の形のモデルでそれを置きます。形状モデルでIは、選択された項目の値を格納するcurrentTitleId又はselectedTitleId変数を有します。このフィールド名は、春のコンボボックスの「パス」に設定されているとtitleListは「項目」に設定されています。そして、あなたは「itemValue」とテキストに設定されているバインドする値は「ITEMLABEL」でその値を示すことにします。それはそれだ。
私のフォームのモデルでます:
private int currentTitleId;
public long getCurrentTitleId() { return this.currentTitleId; }
public void setCurrentTitleId(long currentTitleId) { this.currentTitleId = currentTitleId; }
List titleList = getTitlesFromMyDatabaseHereOrSomewhereElse();
私のjspでます:
<form:label path="currentTitleId">Title</form:label>
<form:select path="currentTitleId" items="${formModel.titleList}" itemLabel="titleDescription" itemValue="titleId" />
私はあなたのタイトルクラスは、このようなものになることを前提としています:
class Title {
public long getTitleId() { return this.titleId; }
public long getTitleDescription() { return this.titleDescription; }
}
また、あなたがこのようにもう少しコンボボックスをカスタマイズすることができます
<form:select path="currentPhoneNumberId">
<form:option value="">-</form:option>
<c:forEach items="${formModel.phoneList}" var="phone">
<form:option value="${phone.phoneNumberId}">${phone.phoneNumberId} - ${phone.description}</form:option>
</c:forEach>
</form:select>
他のヒント
私は春のWebフローそんなにわからないんだけど、通常のSpring MVCのでは、新しいPropertyEditorはを登録するのに十分であるし、このようなものは自動的に動作します。
ます。http://静的.springframework.org /スプリング/ドキュメント/ 2.5.X /参照/ mvc.html#1 MVC-ANN-webdatabinder の
私は、データベースからデータを取得するための責任を負うことになるサービスやDAOを取得し、PropertyEditorは内、あなたのキータイプにIDを変換し、データベースとリターンから値を取得する新しいPropertyEditorはを作成しますのでそれ。私はちょうど私と一緒に例を持っていないが、私はあなたの要点を取得願っています。