我正在使用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>
如果所选inputText的标志为true
且具有适当的密钥,则对所有inputTexts启用验证器。当flag为false
时 - 验证器将为所有inputTexts启用。但我希望将验证器设置为某些inputTexts,依此类推。
有任何想法吗?
感谢。
答案 0 :(得分:2)
这是一个已知问题。在视图构建期间评估<f:validateXxx>
标记的属性。因此,它们不能依赖于仅在视图渲染时间内可用的变量。
这基本上与此处概述和回答的问题相同:How to set converter properties for each row of a datatable?
在您的特定情况下,除了在#{item}
方法中以编程方式评估validate()
之前自己生成验证器之外,您还可以使用OmniFaces <o:validator>
来启用渲染时评估所有属性。
<p:inputText value="#{item.value}">
<o:validator validatorId="javax.faces.Length" maximum="4" disabled="#{flag}" />
</p:inputText>