2017-08-07 38 views
0

我有一個Menu對象,它有一個方法getCommand(),返回EL表達式。當我從bean構造MenuModel時,我只是簡單地使用在JSF中兩次推遲EL表達式

menuitem.setCommand(menu.getCommand()); 

它工作正常。

現在,我需要構建一個命令,但是當我在寫

<p:commandButton icon="#{menu.icon}" value="#{menu.name}" action="#{menu.getCommand}"

按鈕返回存儲在菜單而不是調用它的EL表達式。任何想法如何解決這個問題?

+0

如果'getCommand'是一個方法,那麼就像getCommand()一樣使用它,否則如果它是一個屬性'command'的getter,就會像使用它一樣。 –

回答

0

這可能是別人的幫助,所以我張貼的解決方案我來(this page是非常有益的):

我實現了一個方法,將解決存儲在menu.getCommand表達()使用ELResolver:

public String doAction(String command) { 
    FacesContext context = FacesContext.getCurrentInstance(); 
    Object result = context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), command, Object.class).getValue(context.getELContext()); 
    return result.toString(); 
} 

然後調用它的commandButton:

<p:commandButton icon="#{menu.icon}" value="#{menu.name}" action="#{bean.doAction(menu.getCommand)}"