해결된 질문
작성
·
563
0
약3개월전에 질문을 드렸는데 아직 해결이 안되어 오래 지났지만....다시 질문드려요
.
.
구체적인 상황을 설명 드리자면
<form name="frm" method="post" action="boardWrite" enctype="multipart/form-data">
<input type="text" name="name">
<input type="text" name="pass">
.....
</form>
.
위의 폼이 submit 되어 Controller 에 전달될때
.
@RequestMapping(value="boardWrite", method = RequestMethod.POST)
public String board_write(@ModelAttribute("dto") @Valid BoardVO Boardvo, BindingResult result, Model model, HttpServletRequest request) {
System.out.println(spboardvo.getName());
System.out.println(request.getParameter("name"));
if( result.hasErrors) return "writeForm";
}
.
위처럼 BoardVO 객체로 받거나 HttpServletRequest 로 받는 파라미터는 모두 null 로 표시가 됩니다
따라서 @Valid 와 dto 의 어노테이션이 전달값이 null 인경우로 모두 처리되어 정상값을 입력하여 파라미터로 전달하여도 writeForm 으로 리턴되구요.
파일이 업로드가 잘되는건 이미 확인했으나 그외 파라미터들에 대한 질문을 드린거였습니다.
.
multipart/form-data 로 전달된 파라미터를 BoardVO 로 받아서 @Valid 를 적용해서 처리할수는 없는 건지 ,
아니면 모두 MultipartRequest 객체로 내용을 받은 후에
해당단원에 있었던 내용처럼 Validator를 implements 한 ContentValidator 클래스를 만들어 써야만
하는건 지 궁금합니다
답변 2
1
네 정확히 뭘 물어보시는지 이해가 되었습니다.
일단
public String board_write(@ModelAttribute("dto") @Valid BoardVO Boardvo, BindingResult result, Model model, HttpServletRequest request) {
는
public String board_write(@ModelAttribute("dto") @Valid BoardVO Boardvo, BindingResult result) {
과 같이 사용하시고요. 섞어 쓰시면 안 됩니다.
안터넷에 검색해보시면 복잡한 방법들이 나오는데, 저나 실무자들은 가끔 꼼수를 사용합니다.
보통은 파일 선택만 하게 하는데, 그 옆에 버튼을 하나 더 두고 파일을 먼저 업로드시키고 그다음 나머지 내용을 등록시키면서 밸리데이션 체크를 하는 겁니다.
한꺼번에 처리하시려면 인터넷 검색에서 나오듯 엄청 복잡하고 힘든 과정을 거쳐야 하는데, 그 결과도 썩 좋지는 않습니다.
0