gpt4 book ai didi

jsf-2 - 可编辑数据表中的 SelectBooleanCheckbox 不会改变

转载 作者:行者123 更新时间:2023-12-02 03:58:41 27 4
gpt4 key购买 nike

我有一个可编辑的数据表 (editMode = "cell")。

编辑自由文本字段和列表框非常简单。但是,我不知道如何编辑复选框字段。更具体地说,当我尝试编辑复选框选择时,输出方面的数据在更改后并未实现。

<p:dataTable id="submodels" var="submodel" value="#{projectMB.submodels}" 
editable="true" editMode="cell" widgetVar="cellSubmodels">
<p:column headerText="Mapping file">
<p:cellEditor>
<f:facet name="output">
<h:selectBooleanCheckbox value="#{submodel.mapping}" onclick="return false;"
style="width:96%" label="Root model" readonly="true"/>
</f:facet>
<f:facet name="input">
<h:selectBooleanCheckbox value="#{submodel.mapping}" style="width:96%"
label="Root model"/>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>

有点令人惊讶的是,当我将输入方面更改为 inputText (并在其中输入 true/false 值)时,复选框已正确更新:

<p:dataTable id="submodels" var="submodel" value="#{projectMB.submodels}" 
editable="true" editMode="cell" widgetVar="cellSubmodels">
<p:column headerText="Mapping file">
<p:cellEditor>
<f:facet name="output">
<h:selectBooleanCheckbox value="#{submodel.mapping}" onclick="return false;"
style="width:96%" label="Root model" readonly="true"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{submodel.mapping}" style="width:96%" />
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>

你能指出我做错了什么吗?我在 javascript 控制台和 Java 服务器端没有收到任何错误。

我使用的是 Primefaces 4.0 版

最佳答案

这是 PrimeFaces 中的一个错误,或者至少是一个疏忽。

根据涉及的 JavaScript 代码( saveCell() function in datatable.js ),它仅将输入的新值与旧值进行比较,然后将新值提交到服务器,如下所示 if (input.value != oldvalue)。但是,对于复选框(和单选按钮),输入值永远不会更改。总是一样的。只有选中的状态才应该触发浏览器是否将状态实际发送到服务器。

换句话说,涉及的 JavaScript 代码应该检查它是否是复选框(或单选按钮),然后通过 if (input.checked != oldchecked) 进行检查。

除了编辑 primefaces.js/datatable.js 之外,没有其他方法可以修复它。你最好report把这个问题交给 PrimeFaces 人员并让他们解决。

同时,您可以通过将值复制到隐藏的输入字段来解决此问题。

<f:facet name="input">
<h:inputHidden value="#{submodel.mapping}" />
<h:selectBooleanCheckbox value="#{submodel.mapping}" onclick="$(this).prev().val(this.checked)" />
</f:facet>

关于jsf-2 - 可编辑数据表中的 SelectBooleanCheckbox 不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862661/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com