• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

multipart/form-data 로 전달된 파라미터에 대한 @NotNull, @NotEmpty 관련 다시 질문 드립니다.

21.01.28 19:52 작성 조회수 457

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

heejoonk5님의 프로필

heejoonk5

질문자

2021.01.29

아 네 잘 알겠습니다.... 따로 쓰는 방법을 연구해봐야 겠네요   답변 감사합니다