如何应用IF条件检查JSF页面中的字符串是否相等?

时间:2019-04-23 18:29:19

标签: jsf primefaces jstl el

我想在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>

我了解到字符<和>需要替换为&lt;&gt;
我尝试使用<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 == '&lt;year&gt;'}" >
             <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== '&lt;year&gt;'}"/>
          <f:validateRegex pattern="\d{4}" rendered="#{parameter.label== '&lt;year&gt;'}"/>
          <f:validateLongRange minimum="2015" rendered="#{parameter.label== '&lt;year&gt;'}"/>

         <p:ajax event="change" update=":addError:contents :addError:addErrorButtons :addError:error" listener="#{addError2018Controller.completeMessage}"/>
                </p:inputText>
 </h:column>

它不能像我期望的那样工作,验证不仅适用于标签名称为<year>的字段,而且适用于每个字段。

0 个答案:

没有答案