2014-04-02 17 views
6

Użyj API sprawdzania poprawności fasoli do sprawdzania poprawności obiektu w celu zapisania w DB przez Hibernate. z angielskimi literami wszystko dobrze:Bean Validation API

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

gdy to pisałem:

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

To nie pracują, biorą błąd o błędne wprowadzenie danych (Имя автора только из букв)

Ale jak dodać litery rosyjskie w regexp?

Tak, problem w formie Spring. Kiedy usuń regexp i wprowadź rosyjski tekst, to napisać coś podobnego tej bazy ÐÐμÑÑов

+1

Zmień wzór na 'regexp ="^[\ p {IsCyrillic} a-zA-Z] + $ "'. Sprawdź, czy to działa! – Keerthivasan

+0

@Octopus, zgadnij, że chodziło o 'regexp ="^[\ p {IsCyrillic} a-zA-Z] + $ "' – stema

+0

nie działa, błąd w \ p, ponieważ jest w łańcuchu. jeśli piszę jak \\ p, nie działa – disable1992

Odpowiedz

1

problem rozwiązany przez dodanie w tym kontekście web-app:

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

i regexp jak [a-zA-Zа-яА-Я] działać prawidłowo.

+0

Nie zapomnij przyjąć odpowiedzi. Również użycie flagi '(? I)' sprawi, że wyrażenie regex będzie niewrażliwe, więc może spróbuj '(? I) [a-zá-я]'. – Pshemo

+0

Myślę, że '[a-zA-Zа-яА-Я]' bardziej zrozumiały napisać. – disable1992

Powiązane problemy