Bean Validation API

dis*_*992 6 java regex spring hibernate

使用Bean Validation API验证对象是否由Hibernate保存在DB中.英文字母都很好:

@Pattern(regexp="^[a-zA-Z]+$",message="??? ?????? ?????? ?? ????")
private String name;
Run Code Online (Sandbox Code Playgroud)

当我写这篇文章时:

@Pattern(regexp="^[a-z?-?A-Z?-?]+$", message="??? ?????? ?????? ?? ????")
private String name;
Run Code Online (Sandbox Code Playgroud)

它不起作用,对错误的输入数据采取错误(Имяавторатолькоизбукв)

但是如何在regexp中添加俄语字母?

是的,Spring形式的问题.当删除正则表达式并输入俄语文本时,它在数据库中写入类似的东西ÐÐμÑÑов

dis*_*992 1

通过在网络应用程序上下文中添加以下内容解决了问题:

\n\n
     <filter>  \n        <filter-name>encodingFilter</filter-name>  \n        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  \n        <init-param>  \n           <param-name>encoding</param-name>  \n           <param-value>UTF-8</param-value>  \n        </init-param>  \n        <init-param>  \n           <param-name>forceEncoding</param-name>  \n           <param-value>true</param-value>  \n        </init-param>  \n    </filter>  \n    <filter-mapping>  \n        <filter-name>encodingFilter</filter-name>  \n        <url-pattern>/*</url-pattern>  \n    </filter-mapping> \n
Run Code Online (Sandbox Code Playgroud)\n\n

和正则表达式一样[a-zA-Z\xd0\xb0-\xd1\x8f\xd0\x90-\xd0\xaf]工作得很好。

\n