需要获取所选 check-boxes 的动态计数
Need to get dynamic count of the selected check-boxes
我有两种类型的 check-boxes,一种用于数据 table header 中的 select所有 check-box,另一种类型 select为每一行计算 check-box。
我正在做一个操作,所以我需要显示确认消息,如何从托管 Bean 中获取 selected check-boxes 的计数。
我的代码是用 JSF 1.2 编写的。
我可以做 select 所有记录,select 条记录,ManagedBean 工作正常,但我需要了解其中有多少被 selected 删除。
这是 JSF 代码,
<i:commandLink id="delete"
onclick="if (!confirm('#{managedBean.deleteSelectedCount}')) return false;"
action="#{managedBean.deleteRecords}"
title="Delete records"
immediate="true">
<i:graphicImage url="images/icons/delete.gif" alt="Delete records" />
</i:commandLink>
;
;//Some coding
;
//Data table code starts
<i:dataTable id="caseDataTable"
<h:column>
<f:facet name="header">
<i:selectBooleanCheckbox id="selectAllRecords" title="select All records"
value="#{managedBean.selectAll}">
<a4j:support event="onclick" reRender="caseDataTable,globalMessages" action="#{managedBean.actionSelectAllRecordss}" onsubmit="showBusyIndicator();" oncomplete="hideBusyIndicator();" />
</i:selectBooleanCheckbox>
</f:facet>
<h:outputLabel for="selectCheckbox" value="selectCheckbox"/>
<i:selectBooleanCheckbox id="selectCheckbox"
title="select a record" value="#{managedBean.selected}" >
<a4j:support event="onclick" reRender="selectAllRecords, globalMessages" action="#{managedBean.actionSelectionChange}"
onsubmit="showBusyIndicator();" oncomplete="hideBusyIndicator();"/>
</i:selectBooleanCheckbox>
</h:column>
可能的解决方案是使用 h:inputHidden
组件(我认为它存在于 JSF 1.2 中。如果没有,您可以找到一些替代方案)。
例如
将h:inputHidden
添加到页面
<h:inputHidden id="selectedCountHidden" value="#{managedBean.deleteSelectedCount}"/>
每次单击 header 复选框或 任意行复选框 ,计算 deleteSelectedCount
值和 re-render h:inputHidden
。像
<i:selectBooleanCheckbox id="selectCheckbox" title="select a record" value="#{managedBean.selected}" >
<a4j:support event="onclick" reRender="...,selectedCountHidden,..."
现在,由于 h:inputHidden
将始终保持 deleteSeletedCount
值,您可以通过 java 脚本读取其值,因此不需要 re-loading 点击 commandLink
时的页面
<i:commandLink id="delete"
onclick="if(!confirm(document.getElementById('form:selectedCountHidden').value))return false;"..../>
请注意,如果您定义了 id
的表单,则需要调用
document.getElementById('form:selectedCountHidden').value
否则直接调用
document.getElementById('selectedCountHidden').value
无论如何,检查页面源代码,您会发现 p:inputHidden
的确切 id
。
我有两种类型的 check-boxes,一种用于数据 table header 中的 select所有 check-box,另一种类型 select为每一行计算 check-box。
我正在做一个操作,所以我需要显示确认消息,如何从托管 Bean 中获取 selected check-boxes 的计数。
我的代码是用 JSF 1.2 编写的。
我可以做 select 所有记录,select 条记录,ManagedBean 工作正常,但我需要了解其中有多少被 selected 删除。 这是 JSF 代码,
<i:commandLink id="delete"
onclick="if (!confirm('#{managedBean.deleteSelectedCount}')) return false;"
action="#{managedBean.deleteRecords}"
title="Delete records"
immediate="true">
<i:graphicImage url="images/icons/delete.gif" alt="Delete records" />
</i:commandLink>
;
;//Some coding
;
//Data table code starts
<i:dataTable id="caseDataTable"
<h:column>
<f:facet name="header">
<i:selectBooleanCheckbox id="selectAllRecords" title="select All records"
value="#{managedBean.selectAll}">
<a4j:support event="onclick" reRender="caseDataTable,globalMessages" action="#{managedBean.actionSelectAllRecordss}" onsubmit="showBusyIndicator();" oncomplete="hideBusyIndicator();" />
</i:selectBooleanCheckbox>
</f:facet>
<h:outputLabel for="selectCheckbox" value="selectCheckbox"/>
<i:selectBooleanCheckbox id="selectCheckbox"
title="select a record" value="#{managedBean.selected}" >
<a4j:support event="onclick" reRender="selectAllRecords, globalMessages" action="#{managedBean.actionSelectionChange}"
onsubmit="showBusyIndicator();" oncomplete="hideBusyIndicator();"/>
</i:selectBooleanCheckbox>
</h:column>
可能的解决方案是使用 h:inputHidden
组件(我认为它存在于 JSF 1.2 中。如果没有,您可以找到一些替代方案)。
例如
将
h:inputHidden
添加到页面<h:inputHidden id="selectedCountHidden" value="#{managedBean.deleteSelectedCount}"/>
每次单击 header 复选框或 任意行复选框 ,计算
deleteSelectedCount
值和 re-renderh:inputHidden
。像<i:selectBooleanCheckbox id="selectCheckbox" title="select a record" value="#{managedBean.selected}" > <a4j:support event="onclick" reRender="...,selectedCountHidden,..."
现在,由于
时的页面h:inputHidden
将始终保持deleteSeletedCount
值,您可以通过 java 脚本读取其值,因此不需要 re-loading 点击commandLink
<i:commandLink id="delete" onclick="if(!confirm(document.getElementById('form:selectedCountHidden').value))return false;"..../>
请注意,如果您定义了 id
的表单,则需要调用
document.getElementById('form:selectedCountHidden').value
否则直接调用
document.getElementById('selectedCountHidden').value
无论如何,检查页面源代码,您会发现 p:inputHidden
的确切 id
。