JSF

2010-10-12 16 views
19

से एक पैरामीटर मैं Enum का उपयोग कर अपने मौजूदा कोड विस्थापित करने के लिए कोशिश कर रहा हूँ के रूप में एक Enum मूल्य पासिंग और मैं कुछ Enum के साथ मेरी कमी अनुभव के कारण समस्याएं आ। सबसे पहले यहां मेरी संरचनाएं हैं। मेरी EJB में, इकाई के साथ alongs, मैं एक enum वर्ग (यकीन नहीं करता है, तो यह भी एक वर्ग) है।JSF

public enum Type { 
    PROFILE_COMMENT, 
    GROUP_COMMENT 
} 

अपने प्रबंधित सेम myBean.java में, मैं

@ManagedBean(name="myBean") 
@SessionScoped 
public class myBean { 

    private Type type; 

    public myBean() { 
    } 

    public Type getType() { 
     return type; 
    } 

    public void setType(Type type) { 
     this.type = type; 
    } 

    public void Test(Type t){ 
     System.out.println(t); 
    } 

} 
मेरी JSF पर

तो, है

<h:commandButton value="Test" action="#{myBean.Test(myBean.type.PROFILE_COMMENT)}" /> 

मैं java.lang.ClassNotFoundException: कह गया Type एक वर्ग

कारण मैं नहीं है ताकि मैं बना सकते हैं मेरी EJB में Type है मेरी इकाई के लिए एक समेकित प्रकार, इसलिए मेरी क्वेरी इस

select c from X c where c.type = Type.PROFILE_COMMENT 

उत्तर

36

आप इस तरह की enums तक पहुंच नहीं सकते। जेएसएफ ने हालांकि ईएल के लिए एनम कन्वर्टर्स बनाया है। आप केवल enum नाम स्ट्रिंग के रूप में उपयोग कर सकते हैं।

<h:commandButton value="Test" action="#{myBean.Test('PROFILE_COMMENT')}" /> 
+0

धन्यवाद। यह होना चाहिए। –

+0

आपका स्वागत है। – BalusC

+0

@BalusC: हालांकि यह मेरे लिए काम किया glassfish का उपयोग करते समय, लेकिन पलायन के बाद बिल्ला 7 इस असफल तुम क्यों बाहर बिंदु सकता है, के लिए? –

-1

मेरे मामले में that ने मेरी मदद की।

सरल अपने मूल्य के लिए enum की तुलना करें। ईएल इसे पहचानता है और यह भी जांचता है कि xhtml को सत्यापित करते समय यह मान मौजूद है या नहीं।

<c:if test="#{requestManager.selectedRequestType == 'ItemCreate' or requestManager.selectedRequestType == 'ItemChange'}"></c:if>