我想在h:datatable中的<p:inputText value="#{parameter.value}">
上设置一个验证。列<p:outputLabel value="#{parameter.label}"/>
可以具有不同的名称,但是仅当标签的字符串值为“ <year>
”(<>是名称的一部分)时,验证才有效。
因此,我需要比较两个字符串:如果parameter.label
== <year>
,请执行一些操作(在我的情况下,请验证该字段)。
有代码:
<p:outputLabel value="Missing error attributes" rendered="#{addError2018Controller.addErrorContext.isAttributesMissing}"/>
<h:dataTable value="#{addError2018Controller.addErrorContext.errorsParameters}" var="parameter" rendered="#{addError2018Controller.addErrorContext.isAttributesMissing}">
<h:column>
<p:outputLabel value="#{parameter.label}"/>
</h:column>
<h:column>
<p:inputText value="#{parameter.value}" style="width: 100%;">
<pe:keyFilter regEx="/[\d\-]/" preventPaste="false"/>
<f:validateRegex pattern="\d{4}"/>
<f:validateLongRange minimum="2015"/>
<p:ajax event="change" update=":addError:contents :addError:addErrorButtons :addError:error" listener="#{addError2018Controller.completeMessage}"/>
</p:inputText>
</h:column>
</h:dataTable>
我了解到字符<和>需要替换为<
,>
。
我尝试使用<c:if test =""
,我的想法是,但我不知道为什么它不起作用:
<h:column>
<p:outputLabel value="#{parameter.label}"/>
</h:column>
<h:column>
<p:inputText value="#{parameter.value}" style="width: 100%;">
<c:if test="${parametr.label == '<year>'}" >
<pe:keyFilter regEx="/[\d\-]/" preventPaste="false"/>
<f:validateRegex pattern="\d{4}"/>
<f:validateLongRange minimum="2015"/>
</c:if>
<p:ajax event="change" update=":addError:contents :addError:addErrorButtons :addError:error" listener="#{addError2018Controller.completeMessage}"/>
</p:inputText>
</h:column>
我不确定jsf的工作原理,但是c:if
可能不是一个好选择,rendered
呢?
在@BalusC响应之后,我更改了代码并使用rendered
,所以现在看起来像这样:
<h:column>
<p:outputLabel value="#{parameter.label}"/>
</h:column>
<h:column>
<p:inputText value="#{parameter.value}" style="width: 100%;">
<pe:keyFilter regEx="/[\d\-]/" preventPaste="false" rendered="#{parameter.label== '<year>'}"/>
<f:validateRegex pattern="\d{4}" rendered="#{parameter.label== '<year>'}"/>
<f:validateLongRange minimum="2015" rendered="#{parameter.label== '<year>'}"/>
<p:ajax event="change" update=":addError:contents :addError:addErrorButtons :addError:error" listener="#{addError2018Controller.completeMessage}"/>
</p:inputText>
</h:column>
它不能像我期望的那样工作,验证不仅适用于标签名称为<year>
的字段,而且适用于每个字段。