2012-02-20 7 views
0

私は非常に簡単なシナリオを扱います。選択コントロールのオプションセットを表すために列挙型が作成されます。選択コントロールはプロンプトをプロンプト値として ' - 'にマップする必要があります。対応する列挙型にはこのダッシュはありません。選択コントロールが依然としてプロンプトにある状態でページが送信されると、例外がスローされます。あなたはそのようなケースをどのように扱いますか?Spring 3:値の列挙を列挙する値を選択してください

ページ:

<select id="filterUserAccessLevel" name="filterUserAccessLevel"> 
<option value="-">Select Value</option> 
<option value="DEPOSITOR">Depositor</option> 
<option value="READER">Reader</option> 
<option value="AUTHOR">Author</option> 
<option value="EDITOR">Editor</option> 
<option value="ADMINISTRATOR">Administrator</option> 
</select> 

<input type="submit" name="resetFilter" value="<spring:message code="common.filterResetButtonLabel" />" /> 

UserAccessLevel列挙型:

public enum UserAccessLevel { 
DEPOSITOR("DEPOSITOR"), 
READER("READER"), 
AUTHOR("AUTHOR"), 
EDITOR("EDITOR"), 
ADMINISTRATOR("ADMINISTRATOR"); 

private String code; 

private UserAccessLevel(String code) { 
    this.code=code; 
} 

public String getCode() { 
    return this.code; 
} 
} 

コントローラー:

@RequestMapping(value="/userIndex/", method=RequestMethod.POST, params="resetFilter") 
public void resetFilter(@ModelAttribute("userIndexBean") UserIndexBean bean, Model model) { 
    System.out.println("resetFilter()"); 
    bean.resetFilterSection(); 
    loadBean(1, bean, model); 
} 

例外: " - "

Field error in object 'userIndexBean' on field 'filterUserAccessLevel': rejected value [-]; 

答えて

2

なぜにマッピングされたオプションが必要ですか?空の文字列ではありませんか?この場合

、私は最も簡単な解決策があると思う:

<option value="">Select Value</option> 

@RequestMapping("userIndex") 
public void resetFilter(@RequestParam(required = false) UserAccessLevel filterUserAccessLevel) { 
... 
} 
関連する問題