2008-10-02 2 views
30

選択ドロップダウンがあり、提出時に「null」を表示する必要がある「選択なし」項目をリストに追加したいとします。 私はSimpleFormController由来のコントローラを使用しています。Spring MVCフォームタグ:「選択なし」アイテムを追加する標準的な方法はありますか?

protected Map referenceData(HttpServletRequest httpServletRequest, Object o, Errors errors) throws Exception { 
    Map<String, Object> map = new HashMap<String, Object>(); 

    map.put("countryList", Arrays.asList(Country.values())); 

    return map; 
} 

そしてJSPX部分は一つの可能​​な解決策は、リストの先頭にnull値を追加し、 "としてこの「ヌル」をDISPLYするためにカスタムのPropertyEditorを使用してあるように思わ

<form:select path="country" items="${countryList}" title="country"/> 

です選択なし。 もっと良い解決策はありますか?

@編集:これは、選択した値が「選択なし」であるかどうかを確認するカスタム検証アノテーションで解決しました。より標準的で簡単なソリューションはありますか?

答えて

36

一つのオプション:

<form:select path="country" title="country" > 
    <form:option value="">&nbsp;</form:option> 
    <form:options items="${countryList}" /> 
</form:select> 
+0

jspxページで名前付きエンティティ ' 'を使用してください(エンティティが定義されていない、またはそのようなものが最近私に間違いを引き起こしています)。 非破壊スペースをコードで参照するほうが安全です: '  ' – Michael

+1

このようにして、NoSelectionは' null 'ではなく空の文字列をポストします。 value = $ {null}はnullを送信する必要があります。 – javabot

0

私はあなたがこのためのプロパティエディタを必要としなければならないとは思いません。 "空白"オプションがリストの最初にあり、リストを出力するタグが選択されていない場合、ブラウザは自動的に最初の "空白"を選択する必要があります。

フォームを送信するときに、「空白」の値がコマンドにヌルとしてバインドされるようにしてください。タイプによっては自動的に発生する可能性があります。

関連する問題