Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bean验证API_Java_Regex_Spring_Hibernate - Fatal编程技术网

Java Bean验证API

Java Bean验证API,java,regex,spring,hibernate,Java,Regex,Spring,Hibernate,使用Bean验证API验证对象,以便通过Hibernate保存在DB中。 英文字母都可以: @Pattern(regexp="^[a-zA-Z]+$",message="Имя автора только из букв") private String name; 当我写这篇文章时: @Pattern(regexp="^[a-zа-яA-ZА-Я]+$", message="Имя автора только из букв") private String name; 它不起作用,错误输

使用Bean验证API验证对象,以便通过Hibernate保存在DB中。 英文字母都可以:

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

@Pattern(regexp="^[a-zа-яA-ZА-Я]+$", message="Имя автора только из букв")
private String name;
它不起作用,错误输入数据时出错

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


是的,春天的问题。删除regexp并输入俄文文本时,在数据库中写入类似以下内容的内容

     <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> 

编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
编码滤波器
/*  

类似于regexp的
[a-zA-Zа-a-zA-Я]
工作正常。

将模式更改为
regexp=“^[\p{iscyrical}a-zA-Z]+$”
。看看这样行不行@Octopus,我猜您的意思是
regexp=“^[\p{iscyrical}a-zA-Z]+$”
不工作,错误在\p中,因为它是字符串。如果写得像\\p,不工作是的,对不起;)OP,请看stema的评论。也许可以尝试
incyrical
而不是
incyrical
。另外,你能举一个你无法验证的数据的例子吗?别忘了接受你的答案。另外,使用
(?i)
标志将使正则表达式不区分大小写,因此可以尝试
(?i)[a-zа-а]
。我认为
[a-zA-zа-а-a-Я]
更容易理解。