0

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 アプリケーションです。

何か案は?

4

1 に答える 1

2

MyFaces にはバグがあり、MyFaces 2.2.12 で修正される予定です。myfaces-api-*即時の解決策が必要な場合は、MyFaces スナップショットを使用してください。それらは正常に動作しているようです。ストック バージョンのとの代わりに、Tomee の lib フォルダーにドロップしてくださいmyfaces-impl-*

https://issues.apache.org/jira/browse/MYFACES-4068

于 2016-11-21T09:39:45.407 に答える