【问题标题】:Some labels for input fields with invalid input turn red some don't输入无效的输入字段的某些标签会变成红色,有些则不会
【发布时间】:2023-03-13 20:32:01
【问题描述】:

我在 JSF 表单中有一堆带有关联标签和验证器的输入字段。

在某些字段上,验证失败会将标签变为红色,而在某些字段上则不会。

知道原因可能在哪里,或者如何调试?

我通过单击标签并观察焦点转到相应的输入字段来验证标签/输入关系是否正确设置。

我们使用 JSF-2.0 和 Primefaces 5

这个变红了:

        <p:column style="width:10em;">
            <f:facet name="header">
              <span
                title="#{messages['tooltip.model.modelSearch.modelKeyPattern']}">
                <p:outputPanel>
                  <p:outputLabel
                    id="modelKeyPatternLabel"
                    for="modelKeyPattern"
                    styleClass="control-label"
                    value="#{messages['label.model.modelSearch.modelKey']}" />
                  <p:inputText
                    id="modelKeyPattern"
                    value="#{modelSearchBean.modelKeyPattern}"
                    validatorMessage="#{messages['error.model.modelSearch.modelKey']}"
                    size="6"
                    styleClass="searchField">
                    <f:validateLength maximum="6" />
                  </p:inputText>
                </p:outputPanel>
              </span>
            </f:facet>

这个没有:

          <p:column style="width:6em;">
            <f:facet name="header">
              <span
                title="#{messages['tooltip.model.modelSearch.modelYear']}">
                <p:outputPanel>
                  <h:outputLabel
                    id="modelYearLabel"
                    for="modelYear"
                    styleClass="control-label"
                    value="#{messages['label.model.modelSearch.table.column.modelYear']}" />
                  <p:inputText
                    id="modelYear"
                    value="#{modelSearchBean.modelYear}"
                    validator="#{modelYeaValidator.validate}"
                    styleClass="searchField"
                    size="4">
                  </p:inputText>
                </p:outputPanel>
              </span>
            </f:facet>
            <h:outputText value="#{model.modelYear}" />
          </p:column>

【问题讨论】:

  • 您是否在控制台中看到任何 javascript 错误(使用 firefox 调试控制台)?
  • @Makky 控制台没有错误
  • modelYeaValidator.validate() 被正确调用了吗?
  • @Omar 是的。使用期望值调用 Get,当值无效时抛出 ValidatorException。
  • 抛出该异常时,您是否使用该构造函数(作为参数)发送自定义验证错误消息(FacesMessage 的实例)?

标签: validation jsf primefaces


【解决方案1】:

找到了。红色标签是h:outputLabel,而另一个是p:outputLabel。注意p:h:的区别

【讨论】:

  • 令人讨厌的错误。
猜你喜欢
  • 2018-02-09
  • 1970-01-01
  • 2017-10-28
  • 2019-09-25
  • 2020-02-11
  • 2016-01-04
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多