次のような 2 つの RemoteCommand を定義しました。
<p:remoteCommand name="rc1" actionListener="#{rcBean.rcActionListener1}" action="#{rcBean.rcAction1}" />
<p:remoteCommand name="rc2" action="#{rcBean.rcAction2}" />
Javascript メソッドは、次のようなパラメーターを使用して rc1 と rc2 を呼び出します。
rc1({a:'value for a', b:'value for b'});
rc2({a:'value for a', b:'value for b'});
そして、rcBean rcActionListener と rcAction は: [コードの rcBean 部分]
protected String param_a, param_b;
protected void processRcParams() {
FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
param_a = (String) map.get("a");
param_b = (String) map.get("b");
}
public void rcActionListener1() {
processRcParams();
}
public void rcAction1() {
//-> parameters setted
//-> process something...
}
public void rcAction2() {
//-> parameters not set yet, and so
processRcParams();
//-> process something...
}
パラメータが p:remoteCommand で直接定義されていない (JavaScript から rc1 または rc2 を介して渡される) と判断し、アクションでパラメータを直接読み取ることができる場合は、actionListener は必要ありません。
このためのベスト プラクティスは何ですか: actionListener の前にパラメーターを読み取るか、アクションで直接パラメーターを読み取りますか? なぜ?