データテーブル内に ap:selectOneMenu タグがあり、p:datatable に onRowSelect イベントがあります。私の問題は、選択メニューの右側にあるアイコン内の下向き矢印をクリックするたびにrowSelectイベントが発生することです。もちろん、これは再レンダリングを行うため、瞬く間にメニューが開き、再レンダリング時に再び閉じます。この問題は、選択メニューの本文をクリックしても発生しませんが、もちろん受け入れられません。何か案は?h:selectOneMenu に置き換えることができます。これは正常に動作し、選択範囲を起動しません。ただし、p:selectOneMenu のフィルター属性が必要です。
コードサンプルは次のとおりです。
<p:dataTable id="inParametersDataTable" selection="#{wFDesignBean.selectedParameter}"
selectionMode="single" rowKey="#{p.parameterDefinitionModel.parameterId}"
value="#{wFDesignBean.selectedActivityModel.inParameterModels}"
style="height: 100%; " var="p" >
<p:ajax global="false" event="rowSelect" listener="#{wFDesignBean.loadSelectedParameter}"
update=":cont:tabView:bottomTabView" />
<p:ajax global="false" event="rowUnselect" listener="#{wFDesignBean.clearAllParameterChoices()}" update=":cont:tabView:bottomTabView"/>
<f:facet id="facetId" name="header" >
<h:commandButton id="addNewParam" label="Add New Input Parameter" image="/styling/images/add.png" style="height:15px;" >
<p:ajax global="false" event="click" listener="#{wFDesignBean.addInParameterToSelectedActivity}" update="inParametersDataTable"/>
</h:commandButton>
<h:commandButton label="Reload current parameters list" image="/styling/images/refresh.png" style="height:15px;" >
<p:ajax event="click" listener="#{wFDesignBean.reloadParameters()}" update="inParametersDataTable"/>
</h:commandButton>
<h:commandButton label="Create a new parameter" image="/styling/images/createNew.png" style="height:15px;" >
<p:ajax global="false" event="click" listener="#{navigationBean.showParametersDialog}" update=":cont:tabView:bottomTabView"/>
</h:commandButton>
</f:facet>
<p:column>
<h:commandButton id="delete" image="/styling/images/Delete-icon.png" style="height:15px;">
<p:ajax global="false" event="click" listener="#{wFDesignBean.removeInParam(p)}" update=":cont:tabView:bottomTabView"/>
</h:commandButton>
</p:column>
<p:column headerText="Parameter Name">
<h:selectOneMenu id="paramValues" value="#{p.parameterDefinitionModel.parameterId}" >
<f:selectItem itemValue="#{wFDesignBean.defaultDropDownValue}" itemLabel="--Select Parameter--"/>
<f:selectItems value ="#{wFDesignBean.paramSourceDef}" var="pra" itemLabel="#{pra.parameter_Name}" itemValue="#{pra.parameter_ID}"/>
<p:ajax event="change" listener="#{wFDesignBean.loadSelectedParameterDefinitionData(p.parameterDefinitionModel.parameterId)}" update=":cont:tabView:bottomTabView" />
</h:selectOneMenu>
</p:column>
<p:column headerText="Data Source">
<h:selectOneMenu id="ddsValues" value="#{p.parameterSourceId}">
<f:selectItem itemLabel="None" itemValue="0"/>
<f:selectItems value ="#{wFDesignBean.dataSourceValues}" var="ds" itemLabel="#{ds.lookupValue}" itemValue="#{ds.lookupId}"/>
<p:ajax global="false" event="change" listener="#{wFDesignBean.handleParameterChoices(p)}" update=":cont:tabView:bottomTabView"/>
</h:selectOneMenu>
</p:column>
<p:column headerText="Is Optional">
<h:selectOneMenu id="isOptional" value="#{p.isOptional}">
<f:selectItems value ="#{wFDesignBean.isOptionalLookUp}" var="optional" itemLabel="#{optional.lookupValue}" itemValue="#{optional.lookupId}"/>
<p:ajax global="false" event="change" update=":cont:tabView:bottomTabView"/>
</h:selectOneMenu>
</p:column>
<p:column headerText="Already built">
<h:selectBooleanCheckbox value="#{p.isAlreadyBuiltBool}">
<p:ajax global="false" listener="#{wFDesignBean.setAlreadyBuilt()}"/>
</h:selectBooleanCheckbox>
</p:column>
</p:dataTable>