위드
1k
2017-05-04 16:35:35 작성 2017-05-04 16:43:16 수정됨
5
2790

스프링 modelAttribute사용시 값이 바인딩되지 않습니다.


안녕하세요

글을 저장하는 메소드에 @ModelAttribute 로 dto를 받을때 값이 바인딩되지않고 null이 되는데 어느부분이 잘못된건지 잘 모르겠습니다.


1. dto

package egovframework.admin.service.program;

import java.util.Date;

public class Program {
	private Integer pgId;				//프로그램 ID
	private String 	pgType;				//프로그램 타입
	//변수가 더 있으나 생략했습니다.

	/**
	 * @return the pgId
	 */
	public Integer getPgId() {
		return pgId;
	}
	/**
	 * @param pgId the pgId to set
	 */
	public void setPgId(Integer pgId) {
		this.pgId = pgId;
	}
	/**
	 * @return the pgType
	 */
	public String getPgType() {
		return pgType;
	}
	/**
	 * @param pgType the pgType to set
	 */
	public void setPgType(String pgType) {
		this.pgType = pgType;
	}
}


2. controller

@RequestMapping(value="insert.do", method=RequestMethod.POST)
public String PostProgramInsertForm(Model model, @ModelAttribute("programForm") Program programForm, BindingResult bindingResult) throws Exception {

	System.out.println(programForm.getPgId()); //->null이나옵니다

}


3. jsp

<form:form modelAttribute="programForm" action="insert.do" method="post" submit="return checkForm(this);" cssClass="input_form" enctype="multipart/form-data">
	<form:hidden path="pgId"/> ->100과 같은 ID값입니다.
</form:form>


지울 부분은 지우고 간단하게 위와 같은 구조입니다.

 여기서 insert.do로 submit할 때 값이 바인딩이 안되고 null이 되는데 혹시 어떤 부분을 봐야 될까요?

(jsp에서 insert.do로 post되는 데이터는 피들러로 확인시 정상적으로 전달은 됩니다)

0
0
  • 답변 5

  • 100m8cho
    461
    2017-05-04 16:44:12

    저도 잘모르지만 commandName 이걸로 바인딩해서 쓰지 않나요? 
    <from:form commandName="programForm"> 

    개발자도구로 넘어갈때 pgId  잘 넘겨주나 확인해보시고 보면될것같은데요~

    1
  • vernum
    970
    2017-05-04 16:56:03

    http://stackoverflow.com/questions/28757551/multipart-form-data-binding-for-modelattribute-fails-if-multipart-file-param-is 참고해보세요

    1
  • 위드
    1k
    2017-05-04 17:16:49

    100m8cho님,genius.choi 답변 감사합니다 ㅎ

    제 경우에는 genius.choi 님 링크에서처럼  enctype이 "multipart/form-data" 이어서 그랬던 것 같습니다.


    혹시 이게 버그인건지 원래 인코딩타입이  multipart/form-data 일경우 바인딩이 안되는건지도 궁금합니다.

    0
  • vernum
    970
    2017-05-04 17:38:33

    버그는 아니구요

    http://springsource.tistory.com/9 내용을 읽어보시면 이해가 될 것 같네요

    0
  • 전재형
    4k
    2017-05-04 17:53:15
     @ModelAttribute("programForm") 에서 "programForm" 빼야하지 않을까요
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.