【发布时间】:2019-02-10 15:28:46
【问题描述】:
我有一个包含 2 列的简单惰性数据模型。第二列只有默认禁用的复选框(无法单击它们)。在行选择上,我只想启用复选框(checkbox.disabled = false)而不调用load 方法 - 因为我的数据没有更改,所以不需要请求数据库。问题是当我更新我的dataTable以将checkbox.disabled更改为false时,会调用RENDER_PHASE并调用load方法,另一方面,如果我不更新我的数据表,那么复选框总是被禁用.我怎样才能让它协同工作?
更新:
<h:form id="form-id">
<p:dataTable var="element"
id="data-table-id"
value="#{view.elements}"
lazy="true"
paginator="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
selectionMode="single"
rows="5"
rowsPerPageTemplate="5,10,15,30"
selection="#{view.selectedElement}">
<p:ajax event="rowSelect"
listener="#{view.someMethod()}"
update="checkbox"/>
<p:column headerText="Element"
width="300">
<h:outputText value="#{element.name}"/>
</p:column>
<p:column headerText="Active"
width="300">
<p:selectBooleanCheckbox id="checkbox"
disabled="#{view.selectedElement.id ne element.id}"
value="#{element.active}"/>
</p:column>
</p:dataTable>
</h:form>
当我输入 update="form-id" 时,活动复选框被启用 - 但正如我所说,load 方法被调用,这是不受欢迎的行为
【问题讨论】:
-
不更新整个数据表,只更新复选框怎么样?
-
因为
load方法在我更新整个表时被调用:/ -
这就是为什么我说你不需要更新数据表。简单的更新复选框。
-
我在问题中添加了代码,你能检查我是否做错了吗?
标签: java jsf primefaces