我使用的是Prime faces 3.5数据表,选择模式为single,数据表显示编辑组中的域列表,而加载主域的页面应该在数据表中选择,这个设置是通过后台bean完成的。但问题是,选择工作不正常。例如,如果我第一次点击编辑组,主选择被选中,然后关闭对话框,然后再次编辑相同的组,行选择没有被选中。
<p:dataTable id="dialog_DomainList"
value="#{domainGrpDetailBean.domainAliasVOModel}" var="v"
rowKey="#{v.domainId}" selection="#{domainGrpDetailBean.selectedPrimaryDomain}"
scrollable="#{domainGrpDetailBean.domainScrollFlag}"
scrollRows="5" scrollHeight="70" editable="true"
editingRow="#{v.newAdded}" resizableColumns="true">
<p:ajax event="rowEdit"
listener="#{domainGrpDetailBean.onEditDomainAlias}"
oncomplete="updateDomainAliasTable();"
update=":group_DialogForm:msgs" />
<p:column headerText="#{msg['domaingroup.datatabel.header.ids']}"
width="10%">
<h:outputText value="#{v.domainId}"
rendered="#{v.domainId gt -1}" />
</p:column>
<p:column
headerText="#{msg['domaingroup.datatabel.header.primary']}"
selectionMode="single" width="10%">
</p:column>
<p:column
headerText="#{msg['domaingroup.datatabel.header.domainstatus']}"
width="20%">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{v.statusString}" />
</f:facet>
<f:facet name="input">
<p:selectOneMenu value="#{v.status}"
style="width:98%; text-align:left">
<f:selectItems
value="#{domainGrpDetailBean.domainStatusList}"
var="status" itemLabel="#{status}" itemValue="#{status}" />
</p:selectOneMenu>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
如何通过backing bean设置选定的行设置?
你可以用这样的代码强制执行:
<p:dataTable ...>
<p:ajax event="rowSelectCheckbox" process="@this"/>
<p:ajax event="rowUnselectCheckbox" process="@this"/>