0

dataGrid の行ごとに selectOneMenu をレンダリングしています。問題は、選択が変更されたときに ajax リスナーのメソッドが呼び出されないことです。

dataGrid の外で同じ selectOneMenu を使用すると、正常に動作します。p:selectBooleanCheckbox でも同じ動作が発生します。

XHTML ページ:

<h:form id="form2">
  <p:dataGrid id="gridC" widgetVar="gridC" 
    value="#{myBean.comp}" var="site" columns="1" rowIndexVar="siteIndex">
    <p:column>
      <h:outputText value="#{site.sito}" />
    </p:column>
    <p:column>
      <p:selectOneMenu id="stato" value="#{site.stateId}" 
        required="true">
        <p:ajax update="@form :tabView:frm_buttons" global="false" 
          listener="#{myBean.testChangeState}" />
        <f:selectItems value="#{myBean.siteStates}" var="s"
          itemLabel="#{s.state}" itemValue="#{s.stateId}" />
      </p:selectOneMenu>
    </p:column>
  </p:dataGrid>
</h:form>

マネージドBean:

@ManagedBean
@ViewScoped
public class MyBean implements Serializable {
  private SiteState siteStates;
  private Comp comp;
  // getters and setters...

  public void testChangeState() {
    System.out.println("Test change state fired.");
  }
}

SiteState Bean:

public class SiteState implements Serializable {
  private String state;
  private String stateId;
  // getters and setters...
}
4

1 に答える 1

0

秘密を見つけました。

データ グリッドはアコーディオン パネルのタブ内にあり、次のような ID を使用しました。

<p:tab id="sito#{sito.idSitoStoccaggio}"

これは当てはまりません。たとえば、データ グリッド内からイベントが発生しないなど、状況によっては奇妙な動作が発生するためです。

次への切り替え:

<p:tab id="sito"

私の問題を解決しました。

于 2013-09-05T08:25:15.113 に答える