关闭p:包含h:inputText结果的rowexpansion" WARN如果输入的话,应该总是有一个提交的值......"

时间:2017-06-14 10:35:57

标签: forms jsf primefaces

我在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上解决此问题的其他解释,仅用于通用表单提交。 任何人吗?

1 个答案:

答案 0 :(得分:0)

这是Prime面孔中的一个错误。关闭的rowExpansion的内容将从DOM中删除,因此将其中的任何内容设置为null(因此您的错误)。

如果你只需要将它用于inputText,那么你很幸运。添加:

<f:ajax render="randomInputText" event="keyup" />

该字段开始按预期工作。如果你需要相同的复选框,你运气不好。此修复(作为事件“更改”)修复了在打开和关闭扩展时重置值的情况,但是如果在提交期间关闭了扩展,则无论用户输入是什么,都会设置null。