Jsf 如何将ui状态错误类设置为h:SelectOne验证错误菜单

Jsf 如何将ui状态错误类设置为h:SelectOne验证错误菜单,jsf,Jsf,我的网站上的所有下拉列表都发生了奇怪的事情,当出现验证错误时,除了h:selectOneMenu,所有输入都会得到这个css类“ui状态错误”。我需要设置这个css类,以便在下拉列表无效时显示带有红色边框的下拉列表。这是下拉列表: <div class="col-md-3 col-sm-3 col-xs-6"> <div class="dd-arrow"> <h:selectOneMenu id="ccExpMonth" styleClass="for

我的网站上的所有下拉列表都发生了奇怪的事情,当出现验证错误时,除了
h:selectOneMenu
,所有输入都会得到这个css类“ui状态错误”。我需要设置这个css类,以便在下拉列表无效时显示带有红色边框的下拉列表。这是下拉列表:

 <div class="col-md-3 col-sm-3 col-xs-6">
  <div class="dd-arrow">
    <h:selectOneMenu id="ccExpMonth" styleClass="form-control" value="#{paymentMethodsBean.ccExpMonth}" label="#{lang['paymentmethods.expmonth']}">

      <f:selectItem itemLabel="" itemValue="#{null}" noSelectionOption="true" />
      <f:selectItems value="#{dropDownListBean.ccExpMonths}" var="ccExpMonth" itemLabel="#{ccExpMonth.desc}" itemValue="#{ccExpMonth.code}" />
    </h:selectOneMenu>
  </div>
  <p:message id="ccExpMonthMessage" for="ccExpMonth" styleClass="col-md-7 col-sm-6 col-xs-6" />
</div>

ui状态错误
类特定于PrimeFaces。它将只应用于
组件,而不应用于
组件

您有几个选择:

  • 只需使用
    而不是

    如果您想自己在家种植,请转到以下相关问题:


  • 好吧,jsf在其组件变得无效时不会为其组件提供样式类。您确定其他组件是
    h:
    组件,而不是
    p:
    (PrimeFaces或其他?)吗?如果它们是
    h:
    ,它们在
    样式类
    属性`中是否具有相同的值?是的,我确定所有下拉列表都是
    h:
    ,并且它们都具有相同的样式发布代码(xhtml和java action method/serverside part)的一个组件。我无法复制任何普通jsf组件,如果在style或styleClass属性中没有任何“EL”逻辑,则会出现(jquery ui)ui状态错误。是的,您是对的,所有普通jsf组件都不会在验证时设置任何css类。虽然我认为这是有效的答案(不应将其标记为或的副本),目前的Q没有显示原因。1或2不是这种情况,即使在询问之后,3也不能导致此组件没有获得样式,而其他组件没有获得样式…因此,在目前的情况下,Q没有显示足够的信息来说明实际导致不同样式的原因behaviour@Kukeltje:其他显然是基本面组件(如答案第1段所示,该样式仅适用于PrimeFaces组件)。对于所描述的行为,没有其他合理的原因。请您详细说明选项2好吗?我已经尝试过了,但它始终显示为红色。选项1和3在项目的当前状态下不可行。您的意思是说它已经在初始请求时打印出
    ui状态错误
    ?您的Web应用程序是否正在操作组件t在某种程度上说是这样吗?
    @ManagedBean
    @ViewScoped
    @Data
    @EqualsAndHashCode(callSuper = false)
    public class PaymentMethodsBean extends BaseBean implements Serializable {
        @Size(max = 2)
        @NotBlank
        private String ccExpMonth;
        ...
    }
    
    <p:selectOneMenu ...>
    
    <h:selectOneMenu ... styleClass="#{component.valid ? '' : 'ui-state-error'}">
    
    <o:highlight styleClass="ui-state-error" />