2012-05-06 26 views
20

सशर्त ऑपरेटर की तरह "गाया" "मूल्य" और अन्य लोगों के कई विशेषताओं में काम करता है।क्या एक्शन सॉल्यूशनल में ईएल सशर्त ऑपरेटर का उपयोग करना संभव है?

लेकिन यह कार्रवाई में काम नहीं करता है? या मैं यह गलत कर रहा हूँ?

<h:commandLink action="#{true ? bean.methodTrue() : bean.methodFalse()}"/> 

त्रुटि: javax.el.ELException: कोई मान्य विधि अभिव्यक्ति

(मैं इसे primefaces ajax कार्रवाई विशेषता का उपयोग एहसास हुआ)

+1

इस के अनुसार, यह संभव नहीं है [ईएल सशर्त विधि अभिव्यक्ति] (http://stackoverflow.com/questions/5433876/el-conditional-method-expression) – Fallup

+0

धन्यवाद, इस हो जाता है आशा भविष्य के अपडेट में हल – djmj

उत्तर

44

यह समर्थित नहीं है। action विशेषता एक MethodExpression माना जाता है, लेकिन सशर्त ऑपरेटर यह एक ValueExpression वाक्य रचना बनाता है। मुझे नहीं लगता कि यह ईएल में MethodExpression एस के लिए कभी भी समर्थित होगा।

  1. एक ही क्रिया विधि है जो प्रतिनिधियों कार्य बनाएं:

    आप मूल रूप से 2 विकल्प हैं।

    <h:commandButton ... action="#{bean.method}" /> 
    

    public String method() { 
        return condition ? methodTrue() : methodFalse(); 
    } 
    

    यदि आवश्यक हो साथ

    , यह #{bean.method(condition)} द्वारा विधि तर्क के रूप में में गुजरती हैं।

  2. या, सशर्त 2 बटन प्रस्तुत करना।

    <h:commandButton ... action="#{bean.methodTrue}" rendered="#{bean.condition}" /> 
    <h:commandButton ... action="#{bean.methodFalse}" rendered="#{not bean.conditon}" /> 
    
+1

हमेशा के रूप में अच्छा जवाब – hendrix

+0

बेहतर क्या है? – alexander

+1

@Alex: जिस तरह से आपके मॉडल को सबसे अच्छा फिट बैठता है। दूसरा तरीका हालांकि अतिरिक्त आवश्यकता है कि हालत अनुरोध है, जो सबसे अच्छा दृश्य दायरे में सेम रखकर हासिल किया जा रहा है में संरक्षित किया जाना चाहिए है, othwewise आप समस्या http में # 5 के रूप में वर्णित पर ठोकर जाएगा: // stackoverflow। com/प्रश्न/2118656/commandlink-CommandButton-ajax-समर्थन बीन-एक्शन श्रोता-विधि-नहीं-लागू – BalusC