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>

托管豆:

@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 回答