我在p:datatable
中有一个p:rowexpansion
,其中p:column
包含h:inputText
形式,可以更改支持bean中的某些值:
<p:dataTable var="myVar">
<p:rowExpansion>
...
<p:dataTable value=#{myVar.someList} var=invoiceSummationLine">
<p:column>
<h:inputText value="#{invoiceSummationLine.amountAsDouble}" disabled="#{backerBean.savedOK}" size="10"/>
</p:column>
</p:dataTable>
</p:rowExpansion>
</p:dataTable>
&#34; savedOK&#34;只有在整个表单提交并在其他地方验证后才会切换。
问题在于,当我关闭rowExpansion时,不仅在重新打开时记住h:inputText中的值,日志还会抛出类似的JSF警告:
如果是,则应始终为输入提交值 渲染,其表单已提交,并且最初未呈现 禁用或只读。禁用后,您无法提交表单 通过javascript输入元素。考虑将只读设置为true 而是在表单之前将禁用值重置为false 提交。
从我的理解,这与输入表单上的禁用状态的一些错误匹配有关,但我找不到关于如何在rowToggle上解决此问题的其他解释,仅用于通用表单提交。 任何人吗?
答案 0 :(得分:0)
这是Prime面孔中的一个错误。关闭的rowExpansion的内容将从DOM中删除,因此将其中的任何内容设置为null(因此您的错误)。
如果你只需要将它用于inputText,那么你很幸运。添加:
<f:ajax render="randomInputText" event="keyup" />
该字段开始按预期工作。如果你需要相同的复选框,你运气不好。此修复(作为事件“更改”)修复了在打开和关闭扩展时重置值的情况,但是如果在提交期间关闭了扩展,则无论用户输入是什么,都会设置null。