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...
}