2012-02-23 81 views
1

是否可以爲此輸入字段擁有多個驗證器?每個輸入字段有多個bean驗證器

I.e. SearchAuditLogBackingBean.validate1(),SearchAuditLogBackingBean.validate2()。

<p:inputTextarea id="searchCriteria" 
    validator="#{searchAuditLogBackingBean.validateSearchCriteria}"> 
</p:inputTextarea> 

回答

1

您可以使用<f:validator>來註冊多個驗證器。他們將按照他們聲明的順序被調用。你應該只將驗證方法放在一個完整的@FacesValidator類中,而不是在後備bean中。

<p:inputTextarea id="searchCriteria"> 
    <f:validator validatorId="searchCriteriaValidator" /> 
    <f:validator validatorId="someOtherValidator" /> 
</p:inputTextarea> 

@FacesValidator("searchCriteriaValidator") 
public class SearchCriteriaValidator implements Validator { 
    // ... 
} 

@FacesValidator("someOtherValidator") 
public class SomeOtherValidator implements Validator { 
    // ... 
} 
+0

嗨BalusC我知道這個選項,但是我也從其他的帖子看到,這樣的驗證程序不與EJB DI順利。即向驗證器類中注入EJB資源。 – 2012-02-23 14:20:16

+1

通過'@ ManagedBean'更改'@ FacesValidator',並使用'binding =「#{searchCriteriaValidator}」'而不是'validatorId'。 – BalusC 2012-02-23 14:26:48