春に複数選択リストをバインドしています。アイテムはDAOからデータを取得せず、データは別の選択オプションリストから追加されます。ユーザーがボタンをクリックすると、jquery を使用してデータが複数選択オプション リストに送信されます。
フォームが投稿されたときに、アイテムのデータバインディングは複雑なデータ型であるため発生しません。そのため、CustomEditor を登録して @initbinder にアタッチしました。
編集済みCollectionEditorが市民のリストをビューに返す コードを更新しましたが、リスト内のデータを取得して選択オプションを埋めることができません。リストに要素を追加しようとしていますが、サーバーから戻ったときに jsp が引き続き null を選択します。
以下はコードです:
CustomCollectionEditor
@InitBinder("crime")
protected void initBinder(WebDataBinder binder, HttpServletRequest request, ServletRequestDataBinder victimbinder){
victimbinder.registerCustomEditor(List.class, "victims", new CustomCollectionEditor(List.class){
protected Object convertElement(Object element){
Citizens victims = new Citizens();
String ssNumber = "";
if (element instanceof String){
ssNumber = (String) element;
}
logger.debug("element is ;" +element);
try {
int socialSecurityNumber = Integer.parseInt(ssNumber);
victims = citizenManager.getCitizen(socialSecurityNumber);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
}
return victims;
}
});
DAO からコントローラーに入力された Jsp
これには、ボタンがクリックされたときにDAOクラスからデータが入力されたデータが含まれ、リストからデータが取得され、POJOにバインドされている他のリストに追加されます
<label>Victims List</label><buttonid="addVictimBtn">/button>
<form:select path="" id="dbvictims" title="Victims Of Crime" class="victimLst">
<form:options items="${dbvictims.dbvictimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select>
POJOにバインドされたJsp選択項目
<label>Victims In Crime</label><button id="removeVictimBtn">-</button>
<form:select path="victims" id="victims" title="Victims Of Crime" multiple="multiple" class="victimLst">
<form:options items="${victimList}" itemValue="socialSecurityNumber" itemLabel="name"/>
</form:select><form:errors path="victims" class="errors" />