2014-04-02 118 views
6

使用Bean Validation API驗證對象是否通過Hibernate保存在數據庫中。 以英文字母都很好:Bean驗證API

@Pattern(regexp="^[a-zA-Z]+$",message="Имя автора только из букв") 
private String name; 

當我寫這篇:

@Pattern(regexp="^[a-zа-яA-ZА-Я]+$", message="Имя автора только из букв") 
private String name; 

它不工作,採取錯誤有關錯誤輸入數據(Имяавторатолькоизбукв)

但如何在正則表達式中添加俄文字母?

是的,問題在春天的形式。當刪除正則表達式,並進入俄文本,它在數據庫這樣的事情ÐÐμÑÑов

+1

將模式更改爲'regexp =「^ [\ p {IsCyrillic} a-zA-Z] + $」'。看看是否有效! – Keerthivasan

+0

@Octopus,猜你的意思是'regexp =「^ [\ p {IsCyrillic} a-zA-Z] + $」' – stema

+0

無效,\ p中的錯誤,因爲它在字符串中。如果寫成像\\ p,不起作用 – disable1992

回答

1

問題在web應用程序上下文添加此解決寫:

 <filter> 
     <filter-name>encodingFilter</filter-name> 
     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
     <init-param> 
      <param-name>encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 
     <init-param> 
      <param-name>forceEncoding</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>encodingFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

和正則表達式像[a-zA-Zа-яА-Я]做工精細。

+0

不要忘記接受你的答案。同樣使用'(?i)'標誌會使正則表達式不區分大小寫,所以也許試試'(?i)[a-zа-я]'。 – Pshemo

+0

我覺得'[a-zA-Zа-я-Я]更容易理解。 – disable1992