我想在我的JSF(MyFaces 1.2)應用程序中有一個通用菜單。如何在匿名類上調用JSF操作? EL無法訪問它
<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 2010-06-11 13:49:57
不客氣。 – BalusC 2010-06-11 13:51:54