2011-04-04 22 views
3

我想在JSF2項目中使用h:selectOneMenu框的枚舉。JSF2 enum h:selectOneMenu

到目前爲止,我已經得到了什麼:

枚舉:

public enum MyType { 
    TEST, 
    ME;   
} 

支持bean:

@ManagedBean 
public class MyBean { 
    private MyType type; 
    public MyType[] getTypes { 
    return MyType.values; 
    } 
    public void setType(MyType type) { 
    this.type = type; 
    } 
    public MyType getType() { 
    return this.type; 
    } 
} 

XHTML頁面:

<h:selectOneMenu id="mySelection" 
    value="#{myBean.type}"> 
    <f:selectItems value="#{myBean.types}" /> 
</h:selectOneMenu> 

我的問題是,值正確顯示bu他們沒有保存(我實際上在seam3休眠項目中使用它)。當我使用自定義驗證器嘗試它時,我看到setType方法被調用了兩次,第二次使用null - >導致沒有任何內容被保存。 我錯過了什麼嗎?

到目前爲止,我已經檢查了以下主題:
* jsf-2-0-use-enum-values-for-selectonemenu
* jsf-2-0-use-enum-in-selectmany-menu
* jsf-best-way-to-enum-internationalization-i18n

非常感謝您的幫助,
斯蒂芬

回答

3

你應該在這個特殊的案件根本不需要定製轉換器。 JSF有一個內置枚舉轉換器。自定義枚舉轉換器僅在您有List<SomeEnum>而不是SomeEnum作爲值時纔是必需的。另請參閱Use enum in h:selectManyCheckbox

除了由於在兩個方法中缺少括號而導致的兩個編譯錯誤,發佈的代碼看起來很好,應該可以正常工作。您的問題可能是由於您爲簡單起見而忽略了其他問題。

+0

感謝您的幫助。終於可以解決我的問題了 - 在xhtml頁面中有混淆。 – Stephan 2011-04-05 08:02:22