2014-03-19 56 views
0

我有以下環境:自動驗證

  • Glassfish的4
  • 休眠 - 驗證 - 5.0.1.Final.jar(耳)

現在我嘗試實施的方法參數自動驗證:

@Local 
@ValidateOnExecution(type = ExecutableType.ALL) 
public interface SomeServiceLocal { 

    String someMethod(@Size(max = 1) String value); 

} 

在執行:

@Stateless 
public class OtherBean implements OtherBeanLocal { 

    @Inject 
    private SomeServiceLocal someService; 

    @Override 
    public String otherMethod() { 
     return someService.someMethod("abc"); 
    } 

    } 

} 

我認爲調用someMethod會導致驗證錯誤。爲什麼它不起作用?

+0

只要您使用Bean Validation註釋,方法驗證就應該自動運行。您甚至不必添加(也可能不應該,除非有充分的理由)驗證器工件到耳邊。 Bean驗證由容器提供。這就是說,我不知道爲什麼它不會發生在你的情況。日誌中是否有任何內容(您是否啓用了調試/跟蹤日誌記錄)?有什麼異常? – Hardy

+0

我在日誌文件中沒有任何奇怪的消息。 –

回答

0

從您的EAR文件中刪除hibernate驗證器。當您以這種方式嵌入時,自動註冊將無法正常工作。您需要使用CDI擴展名來註冊。

+0

我從依賴關係中刪除了hibernate-validator,結果是一樣的。也許我需要一些額外的配置(攔截器等)? –

0

我自己解決了問題。有必要在bean實現的類級別添加@ValidateOnExecution - SomeServiceBean