2012-03-12 31 views
1

我無法獲得Java Bean驗證(JSR-303)的工作。它不會給出任何錯誤並處理操作方法。我將一個字符放在「name」inputText中,它接受並執行process()方法(大小注釋不適用)。JSF Bean驗證約束沒有任何效果

當我把一個字符我希望My.Process()方法不被執行,我不是嗎? 是否有任何配置讓我忽略驗證工作?

在我的項目的WEB-INF/lib目錄我有驗證-API 1.0.0.GA.jar休眠 - 驗證 - 4.2.0.Final.jar
應用服務器:的Tomcat 7.0.25(Tomcat的庫文件夾中我有MyFaces的-API-2.1.5.jarMyFaces的-IMPL-2.1.5.jar)。
IDE:Eclipse Helios SR2

我從控制檯收到消息「INFO:MyFaces Bean驗證支持禁用」,但我有指定的罐子。

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 
import javax.validation.constraints.Size; 

@ManagedBean(name="my") 
@RequestScoped 
public class MyBean implements Serializable { 
    @Size(min=3, message="ERROR") 
    private String name; 

    public String process() {...} 

    ...getters, setters, etc... 
} 

JSF形式

<h:form> 
    <h:messages /> 
    <h:inputText value="#{my.name}" /> 
    <h:commandButton value="Save" action="#{my.process}" /> 
</h:form> 

我也試過:
@NotEmpty,@NotBlank,
@ org.hibernate.validator.constraints.Length( min = 3,message =「ERROR」)
但它們不起作用。

+2

您的代碼適用於我的環境(GF 3.1.1,Mojarra 2.1.3)。除Glassfish(Java EE6 bean-validation.jar)之外,我沒有其他驗證API。 – 2012-03-12 15:20:22

+0

嗯,在寫這裏之前,我實際上已經簡化了我的代碼,但這個精確的簡化版本對我而言也不適用於我上面指定的環境。我真的厭倦了試圖找到問題。它沒有任何意義?我讀了幾十個關於jsf bean驗證的網頁,並根據它們全部應該工作... – Seregwethrin 2012-03-12 15:35:43

+0

我在控制檯下面得到消息,我試圖找出它爲什麼說這個。我有上面指定的罐子。 「信息:MyFaces Bean驗證支持禁用」 – Seregwethrin 2012-03-12 16:14:17

回答

3

我想寫一個可能的問題。

當我有這個變量

private String Name; 

驗證沒有工作,因爲getter和setter方法都是這樣

private String getName(){} 

所以我改名名稱

private String name; 

和它開始驗證:)

可能是這個問題。

+0

參見http://stackoverflow.com/questions/11074802/bean-validation-not木材加工-IF-名稱可變的前綴,用下劃線 – Robert 2013-12-06 19:19:29

1

感謝您的支持! FYI,bean驗證程序的maven座標:

<dependency> 
     <groupId>org.glassfish</groupId> 
     <artifactId>bean-validator</artifactId> 
     <version>3.0-JBoss-4.0.2_03</version> 
</dependency>