मैं अपने जेएसएफ (माइफेस 1.2) एप्लिकेशन में एक सामान्य मेनू रखना चाहता हूं।अज्ञात वर्ग पर जेएसएफ कार्रवाई कैसे शुरू करें? ईएल इसका उपयोग नहीं कर सकता
<h:form>
<h:dataTable id="dt1" value="#{portal.actionList}" var="item">
<f:facet name="header">
<h:outputText value="Menu" />
</f:facet>
<h:column>
<h:commandLink action="#{item.action}">
<h:outputText value="clickme"/>
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
फिर सत्र-गुंजाइश पर मेरी पोर्टल इस प्रकार दिखाई देगा:
class Portal {
private ArrayList<IAction> list = new ArrayList<IAction>();
public Portal() {
list.add(new IAction() {
public action() {
log.info("called action here");
}
});
}
public ArrayList<IAction> getActionList() {
return list;
}
}
यह ठीक प्रदर्शित करेगा जब मैं इस कोड को चलाते हैं। लेकिन जब आप "clickme" कमांड लिंक पर क्लिक करके यह कार्यवाही करने की कोशिश - निम्न अपवाद हो जाएगा:
Class org.apache.el.parser.AstValue can not access a member of class Portal$1 with modifiers "public"
वहाँ, अनाम कक्षाओं की एक सूची प्रदर्शित करने के लिए कोई तरीका है जो एक विधि (इस उदाहरण में से ITemplate.action()
) निष्पादित किया जा सकता है?
संपादित करें:
यह काम करता है जब मैं एक (भीतरी) वर्ग का उपयोग करें। जैसा उदाहरण के लिए:
class Bla implements IAction {
public void action() {
log.info("yes, i am working");
}
और पोर्टल निर्माता
public Portal() {
list.add(new Bla());
}
लेकिन इस तरह से मैं यह चाहता हूँ नहीं है में ...
यह एक समझ स्पष्टीकरण है और इस उद्देश्य के लिए, यह समाधान ठीक काम करता है। धन्यवाद ++ – justastefan
आपका स्वागत है। – BalusC