如何知道组件子组件是否不是有效的 Primefaces?

occ*_*coa 1 jsf primefaces jsf-2

<h:panelGroup>我正在使用 Primefaces 5.0,当<p:inputText>无效时我需要在元素中添加类。我有以下代码:

<h:panelGroup layout="block" styleClass="form-group #{ VALIDATION HERE ? '' : 'has-error'}" >                               
  <p:outputLabel for="txtUserId" value="ID:"/>
  <p:inputText styleClass="form-control" id="txtUserId" required="true" value="#{userAction.user.id}">                                  
      <f:ajax event="keyup" execute="@this" render="msgtxtUserId"/>
      <f:validateLength minimum="2" />                                  
  </p:inputText>
  <p:message for="txtUserId" id="msgTxtIdUsuario" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

先感谢您。

Bal*_*usC 5

您显然已经知道可以用来UIInput#isValid()检查输入组件是否有效,并且可以在 EL 中用于#{component.valid}此目的。您只是似乎还没有意识到它#{component}实际上指的是该类的一个实例UIComponent。如果您检查它的javadoc,那么您应该已经注意到一个findComponent()可以用来通过搜索表达式查找子组件的方法。

知道这一点后,您可以通过以下方法实现这一目标:

<h:panelGroup ... styleClass="#{component.findComponent('txtUserId').valid ? '' : 'has-error'}">
    <p:inputText id="txtUserId" ... />
    ...
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

也可以看看: