JSFで変数パラメータを使用してメソッドを呼び出すにはどうすればよいですか?
私はこのようなことを試しました:
<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
ただし、これは機能しません。
EL 2.2+ を使用している場合は可能です。
古いバージョンの EL を使用している場合は、次の操作を使用できます。
<h:commandButton value="Send" action="#{myBean.checkPIN}" />
<f:param name="parameter" value="123" />
</h:commandButton>
マネージド Bean では、次のように取得できます。
public void checkPIN() {
...
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("parameter");
...
}
で動作し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
必要があり、メッセージを表示するにはコンポーネントが必要であることを覚えておいてください。または、コンソールにメッセージを出力するように実装を変更することもできます