2013-01-18 2 views
1

간단한 질문을해서 죄송합니다. 나는 많은 것을 수색했지만 정확한 해결책을 찾을 수는 없다.문제의 양식 검증을위한 스프링 주석?

내 봄 콩 클래스에는 int 필드 (개인 int id)가 있습니다. 나는 @NotEmpty annotion을 사용했습니다.

입력란에 알파벳이나 문자열이 아닌 숫자 만 허용해야합니다. 어떤 주석을 사용해야합니까?

나는 @NumberFormat(style = Style.NUMBER), @Digits(fraction = 0, integer = 5) 주석 및 아무 것도 작동하지 않았다.

나에게 솔루션이나 양식 유효성 검사에 대한 예를 제시하십시오 ...

+0

무엇 컨트롤러 자체에 하나 '로컬'을 주입 한 후

public class FooValidator implements Validator { /** * This Validator validates *just* Foo instances */ public boolean supports(Class clazz) { return Foo.class.equals(clazz); } public void validate(Object obj, Errors e) { ValidationUtils.rejectIfEmpty(e, "name", "name.empty"); Foo foo = (Foo) obj; if (!isNumeric(foo.getFieldThatShouldBeNumeric()) { e.rejectValue("fieldThatShouldBeNumeric", "notnumeric"); } } } 

을 정확히 문제? Spring은'int'에 바인딩 된 필드에 임의의 문자를 입력 할 수있게 해줍니까? 확실합니까? – axtavt

+0

다음 페이지를 참조하십시오. http://stackoverflow.com/questions/3721122/spring-validation-with-valid – madhead

+0

@axtavt 지원해 주셔서 감사합니다. 내 필요는 텍스트 필드에있는 숫자 만 허용하는 것입니다. "eee"또는 34ue와 같은 문자열을 입력하면 "숫자 만 허용됨"으로 오류 메시지를 표시해야합니다. 사용해야하는 것은 무엇입니까? –

답변

0

나는주의 깊게 relevant part of the reference을 읽는 것이 좋습니다. 당신은 Validator 인터페이스를 구현하여 검증 만들 :

@Controller 
public class MyController { 

@InitBinder 
protected void initBinder(WebDataBinder binder) { 
    binder.setValidator(new FooValidator()); 
} 

@RequestMapping("/foo", method=RequestMethod.POST) 
public void processFoo(@Valid Foo foo) { ... } 

또는 '세계적':

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 

    <mvc:annotation-driven validator="globalValidator"/> 

</beans>