31

選択ドロップダウンがあり、送信時に「null」が表示される「選択なし」項目をリストに追加したいと思います。SimpleFormController派生コントローラーを使用しています。

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の部分は

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

考えられる解決策の1つは、リストの先頭にnull値を追加し、カスタムPropertyEditorを使用してこの「null」を「選択なし」として表示することです。より良い解決策はありますか?

@Edit:選択した値が「選択なし」であるかどうかをチェックするカスタム検証アノテーションを使用して、これを解決しました。より標準的で簡単な解決策はありますか?

4

2 に答える 2

41

1 つのオプション:

<form:select path="country" title="country" >
     <form:option value="">&nbsp;</form:option>
     <form:options items="${countryList}" />
</form:select>
于 2008-10-05T00:37:11.497 に答える
1

これにはプロパティ エディタは必要ないと思います。「空白」オプションがリストの最初にあり、リストを出力するタグがそれらのいずれも選択済みとしてマークしない場合、ブラウザは最初の「空白」オプションを自動的に選択する必要があります。

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

于 2008-10-06T07:19:22.277 に答える