2014-04-02 94 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