저는 내 프로젝트에 스프링 4.1, 하이버 네이트 검사기 5.1.3을 사용하고 있습니다. GroupSequence가 지난 2 일 동안 작동하도록 노력했습니다. 유효성 검사 의사, 블로그 및 stackoverflow에 게시 된 몇 가지 질문을 언급했습니다.콩 밸리데이션 그룹 시퀀스가 작동하지 않습니다.
아래 클래스를 참조하십시오. 주석에서 GroupSequence 및 그룹을 제거하면 모든 유효성 검사 메시지가 함께 표시됩니다. 즉 이름 및 기타 필드에 대한 모든 검사가 함께 실행됩니다. 이름 필드에 대해 말하자면 - 먼저 @NotBlank와 @Size를 유효화 한 다음 이름을 Pattern과 일치시켜야하고 데이터베이스 호출 때문에 @UniqueName을 확인해야합니다.
문서 및 응답에서 제안 된대로 GroupSequence를 만들었습니다. 그러나 유효성 검사가 실행되면 @NotBlank 및 @Size 만 name에 대해 실행됩니다. 나머지 주석에서 그룹 값을 제거하면 작업이 시작되지만 모든 오류 메시지가 한 번에 표시되므로 원하지 않습니다.
그룹으로 지정된 어노테이션을 원합니다. First.class가 함께 실행되고 Second.class 유효성 검사가 시작됩니다. 그룹으로 지정된 유효성 검사가 해고되지 않는 이유는 알 수 없습니다.
나를 인도 해 주실 수 있습니까?
@GroupSequence({MyForm.class, OrderedChecks.class})
public class MyForm {
@NotBlank
@Size(min = 2, max = 40)
@Pattern(regexp = "^[\\p{Alnum} ]+$", groups = First.class)
@UniqueName(groups = Second.class)//Custom validation
private String name;
@NotBlank
@Size(min = 2, max = 40)
private String url;
@NotBlank
@Size(max = 100)
private String imagePath;
//Custom Validation
@CheckContent(acceptedType = <someString>, allowedSize=<someval>, dimensions=<someval> groups = Second.class)
private MultipartFile image
...
}
@GroupSequence(value = {Default.class, First.class, Second.class})
public interface OrderedChecks {}
@Controller
@RequestMapping(value = "/myForm")
public class MyFormController {
@RequestMapping(method = POST)
public String completeSignUp(@Valid @ModelAttribute("myForm") final MyForm myForm,
BindingResult result, RedirectAttributes redirectAttributes, Model model) {
if(result.hasErrors()) {
model.addAttribute(companyDetailsForm);
//ERROR_VIEW="myForm";
return ERROR_VIEW;
}
// Doing something else.
return <success view>;
}
}
누군가 해결 방법이나 내가 잘못하고있는 것에 대한 아이디어가 있습니까? – jay28
유효성 검사가 예상대로 작동하지 않는 코드로 질문을 업데이트 할 수 있습니까 (예 : 컨트롤러 메소드)? – Khalid
@Khalid가 컨트롤러 코드를 추가했으나 예상대로 작동하지 않습니다. 나는 그것을 작동시키기 위해 해킹을 사용해야 할 것이다. 나는 내 마음 속에 있지만, 해킹을하기보다는 봄 MVC에서 사용할 수있는 것을 찾고있다. 이 체크를 사용자 정의 주석에 넣어야하지만,이 경우에도 실패한 조건을 기반으로 네 개의 주석이있는 이름과 같은 필드에 대한 오류 메시지를 변경할 수 있는지 여부는 알 수 없습니다. 속성 파일에 오류 메시지를 정의했습니다. – jay28