BindResult 삽질기!!!
회사 동료가 Spring Validation 기능을 활용해보자고 해서 해보는데 엄청난 시간 소모가...
결론은 BindResult 파라미터 선언을 @Valid 바로 뒤에 해야 한다는...
[TestWeb.java]
import javax.validation.Valid;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("test")
public class TestWeb {
private static Logger log = LoggerFactory.getLogger(TestWeb.class);
@RequestMapping(value="case1", method=RequestMethod.GET)
public String test(@Valid TestVo testVo, BindingResult bindResult, Model model) {
log.debug("bindResult.hasErrors(): {}", bindResult.hasErrors());
if (bindResult.hasErrors()) {
throw new RuntimeException("파라미터 설정이 잘 못 되었습니다..");
//return "coupon/mainError"; // 공통 Exception 처리 Throws 하거나 에러 뷰 return
}
return "test/case1";
}
}
[TestVo.java]
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
@Getter @Setter
public class TestVo {
@Size(min=0, max=5)
private String test1;
@NotNull
private String test2;
}
[build.gradle]
dependencies {
compile 'spring.... 4.1.x...'
compile 'org.hibernate:hibernate-validator:5.1.3.Final'
}