如何在JSF中使用變量參數調用方法?具有可變參數的JSF操作方法
我想是這樣的:
<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
但是,這是行不通的。
如何在JSF中使用變量參數調用方法?具有可變參數的JSF操作方法
我想是這樣的:
<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
但是,這是行不通的。
如果使用EL 2.2+,這是可能的。
如果您正在使用舊版本OT EL,你可以使用做到以下幾點:
<h:commandButton value="Send" action="#{myBean.checkPIN}" />
<f:param name="parameter" value="123" />
</h:commandButton>
在Managed Bean可以檢索它像:
public void checkPIN() {
...
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("parameter");
...
}
它工作。它的版本肯定有問題。 2.2+更清晰易用。謝謝 – 2013-05-10 15:25:30
@MateuszGaweł看起來像問題出現在您的Web應用程序服務器中。你在使用哪一個? – 2013-05-10 15:43:20
是的,它是可能的,如果你使用的是>EL 2.2 which is part of Servlet 3.0.
見@ BalusC的suggetions這裏Invoke direct methods or methods with arguments/variables/parameters in EL
可能的重複你是對的。謝謝 – 2013-05-10 15:25:55
@MateuszGaweł很高興幫助你。標記它作爲答案,如果它有幫助(標記左側)。 – 2013-05-10 15:26:53
它的工作與EL 2.2
。這可能是您使用的版本,因爲您正在使用JSF 2
(即使情況可能不是這樣)。
你可以做一個非常簡單的測試。你可以有一個OtherMB
像這樣:
@ManagedBean(name = "otherMB")
public class OtherMB{
public String getValue(){
return "Other Managed Bean Value";
}
}
而像這樣在你的MainMB
的方法:
@ManagedBean(name = "mainMB")
public class MainMB{
public void method(String str){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(str));
}
}
而在你xhtml
,你可以用一個按鈕只需調用該函數:
<h:commandButton action="#{mainMB.method(otherMB.value)}" value="Click Me!" />
請記住,h:commandButton
需要在h:form
之內,並且您需要一個組件nt顯示消息。或者您可以更改實現以在控制檯中打印消息
該功能不是特定於JSF 2.x.它是特定於EL 2.2的。所以使用JSF 2.x並不意味着EL 2.2也被使用。仔細閱讀http://stackoverflow.com/a/3284328/ – BalusC 2013-05-10 16:31:44
的最後一段我知道@BalusC。我仔細閱讀了你的答案(這很順利),這就是爲什麼我在回答中說「可能」和「即使情況可能不是這樣」的原因。 – 2013-05-10 17:17:58
您正在使用哪種JSF版本? – 2013-05-10 15:18:38
我使用2.0版本 – 2013-05-10 15:19:35
[JSF 2.0方法調用](http://stackoverflow.com/questions/3284236/jsf-2-0-method-invocation) – BalusC 2013-05-10 16:31:17