1

我正在使用 primefaces 2.2.1,我想f:validatorLength在数据表中设置为一行,其中有很多行p:cellEditor

<c:set var="flag" value="#{item.key eq 'someKey'}" />
<p:column headerText="header">
    <p:cellEditor>
       <f:facet name="output">
        <h:outputText value="#{item.value}" />
            </f:facet>
               <f:facet name="input">
                <p:inputText value="#{item.value}" style="width:100%" >
    <f:validateLength maximum="4" disabled="#{flag}"/>
                </p:inputText>

                </f:facet>
    </p:cellEditor>
</p:column>

并且当标志true用于具有适当键的所选 inputText 时,验证器会为所有 inputTexts 打开。并且当标志为false- 验证器为所有输入文本打开。但我想将验证器设置为一些 inputTexts 等等。有任何想法吗?谢谢。

4

1 回答 1

2

这是一个已知问题。标签的属性<f:validateXxx>在视图构建时进行评估。因此它们不能依赖于仅在视图渲染期间可用的变量。

这基本上与此处概述和详细回答的问题相同:如何为数据表的每一行设置转换器属性?

在您的特定情况下,除了您自己#{item}在方法内部以编程方式评估的自行开发验证器之外validate(),您还可以使用OmniFaces <o:validator>,它可以对所有属性进行渲染时评估。

<p:inputText value="#{item.value}">
    <o:validator validatorId="javax.faces.Length" maximum="4" disabled="#{flag}" />
</p:inputText>
于 2012-11-22T13:55:45.320 回答