2014-07-23 50 views
0

有沒有什麼辦法可以在不使用TomEE的情況下在Tomcat中使用bean驗證?如何在Tomcat中使用bean驗證?

任何建議是值得歡迎的。由於

(更新)

我已經包含下面我的pom.xml。

<dependency> 
<groupId>javax.validation</groupId> 
<artifactId>validation-api</artifactId> 
<version>1.0.0.GA</version> 
</dependency> 
<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-validator</artifactId> 
<version>4.0.2.GA</version> 
</dependency> 

但是,以下JSF頁面不會在Tomcat中顯示驗證錯誤消息。

<h:form id="validateID"> 
    <h:outputLabel for="id" value="ID : " title="id" /> 
     <h:inputText id="myid" value="#{validationDemoManagedBean.myid}" 
     title="id" tabindex="8" size="20"> 
     </h:inputText> 
     <h:message for="myid" style="color:red" /> 
     <h:commandButton value="Validate" type="submit" /> 
</h:form> 

我們validationDemoManagedBean支持bean具有以下

@ManagedBean 
@SessionScoped 
public class ValidationDemoManagedBean implements Serializable { 

@Pattern(regexp = "\\d{7}\\(\\d{1}\\)", message = "Must in pattern 9999999(9)") 
private String myid = ""; 

. . . 
} 

我們沒有指定faces-config.xml中的任何默認驗證。

當在TomEE中運行此應用程序時,應該能夠顯示驗證錯誤消息,並且用戶輸入任何無效的ID文本並單擊驗證按鈕。但是,這在tomcat中不起作用。我在部署到Tomcat時有什麼錯過?

回答

0

Bean Validation不依賴於JavaEE,只需將Hibernate Validator等提供程序的JAR添加到您的應用程序類路徑或服務器的「lib」目錄即可。對於Hibernate驗證器,您可以瞭解更多關於所需的依賴項here。另請參閱此FAQ entry以瞭解有關在Tomcat 6上使用Hibernate Validator 5的更多信息。

+0

感謝Gunnar, 我的問題是我已將hibernate-validator包含在pom.xml中但是,JSF仍然無法驗證在用戶點擊提交按鈕後支持bean。 (注:我的face.config.xml中沒有任何默認驗證器)tomEE中的相同應用程序工作。我會更新我的問題以反映情況。 –

+0

在Java EE容器中,您只能獲得JSF和BV開箱即用的集成(JSF規範在2.5.7中說:「如果包含JSF運行時的環境,JSF實現必須支持JSR 303 Bean驗證需要JSR 303 Bean Validation。目前唯一的這樣的環境是當JSF包含在Java EE運行時「)。因此,在非SE環境(例如純Tomcat)中,您必須自己設置所需的集成點。你可以看看TomEE的代碼庫來了解他們是如何做到的,但是我又說你可以使用TomEE自己開始。 – Gunnar