f:ajax
最も単純な JSF 2.2 ページでリスナーを動作させることができません。値が割り当てられますが、リスナーは耳が聞こえません。h:selectOneRadio
奇妙なことに、 に置き換えると、まったく同じコードが完全に正常に機能しh:selectOneMenu
ます。html は次のとおりです。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<title>Test</title>
</h:head>
<h:body>
<h:form id="f" >
<h:selectOneRadio id="r" value="#{test.mode}">
<f:selectItem itemValue="One"/>
<f:selectItem itemValue="Two"/>
<f:selectItem itemValue="Three"/>
<f:ajax render="@form" execute="@form" listener="#{test.listener2()}"/>
</h:selectOneRadio>
<br/>
<h:outputText id="out" value="#{test.mode}"/>
</h:form>
</h:body>
</html>
そして豆:
@Named
@SessionScoped
public class Test implements Serializable {
private final static Logger LOG = Logger.getLogger(Test.class.getName());
private String mode;
public String getMode() {
return mode;
}
public void setMode(String mode) {
this.mode = mode;
LOG.info("Mode setter: " + mode);
}
public void listener1(AjaxBehaviorEvent event) throws AbortProcessingException {
LOG.info("Mode listener 1: " + mode);
}
public void listener2() {
LOG.info("Mode listener 2: " + mode);
}
}
に対しては、どちらのリスナー メソッド タイプも起動されませんh:selectOneRadio
。Bean を as として作成し、@ManagedBean
異なる ajax イベント タイプを使用することも役に立ちませんでした。
この問題は、Apache Tomee をバージョン 7.0.1 (MyFaces 2.2.10、JSF 2.2) にアップグレードした後に発生しました。MyFaces と 2.2.11 の同じ問題。
Web アプリは ear 内にバンドルされており、他の JSF ライブラリは読み込まれておらず、Primeface なども含まれておらず、サーブレット フィルターも何もなく、純粋な JSF 2.2 アプリケーションです。
何か案は?