2013-07-10 4 views
0

데이터를 조회 객체에 게시하는 양식이 있습니다. Inquiry 개체는 명시 적으로 정의 된 생성자가없는 Controller의 ModelAttribute입니다. age 입력 요소의 value 속성을 양식의 빈 문자열로 설정 했음에도 불구하고 0으로 처리됩니다. 이것은 우리가 0으로 초기화되는 Inquiry 객체로부터 age의 기존 값을 얻는다고 생각하게 만듭니다. 이미 enquiry.age에 게시하는 방법이 있습니까? 내 페이지에 현재 값이 표시되지 않습니까? 내 컨트롤러의양식 입력시 값을 무시하는 스프링 MVC 바인딩

내 양식

<form:form commandName="enquiry" method="post" action="mycontext/jsp/enquiry-search"> 
    <form:input path="name" value=""/> 
    <form:input path="age" value=""/> 
</form:form> 

@RequestMapping(value = "/enquiry/{screenType}", method = {RequestMethod.GET, RequestMethod.POST}) 
@ResponseStatus(HttpStatus.OK) 
public String getEnquiryScreen(@ModelAttribute ("enquiry") Enquiry enquiry, @PathVariable("screenType") String screenType) { 

    return "enquiry"; 
} 

@ModelAttribute("enquiry") 
public Enquiry getEnquiry() { 
    return new Enquiry(); 
} 

내 문의 클래스

public class Enquiry { 

private String name; 
private int age; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public int getAge() { 
    return age; 
} 

public void setAge(int age) { 
    this.age = age; 
} 

답변

0

Thats not how model attributes work.

Y 경우 효과에 대한 여러분의 형태는, 아무것도하지 않는 조회는 모델 속성을 만든다.

get과 post에 대한 두 가지 메소드가 있는데 POST는 ModelAttribute annaotion으로 메소드 인수로 Inquiry를 취할 수 있습니다. 이렇게하면 모델 속성으로 주석 처리 된 메소드가 아니라 새 인스턴스를 인스턴스화하는 메소드가 아닌 객체가 요청에 대해 폴리싱되도록 할 수 있습니다.