2010-03-21 3 views
0

저는 Spring MVC (Spring Roo를 통해)를 사용하여 사람을 관리하기위한 작은 웹 애플리케이션을 빌드합니다. 사람을 생성하기위한 페이지에서 bean Person은 폼 백킹 객체 (모델 맵에서 키 "person")로 사용됩니다.양식 백킹 빈의 일부가 아닌 애트리뷰트/오브젝트 액세스 및 수정

<form:form action="${form_url}" method="POST" modelAttribute="person"> 

사용자가 작성 양식에서 변경할 수있는 특성을 모델 맵에 추가하고 싶습니다. 기본적으로 부울을 추가하려고하므로 사용자가 제출 단추를 누른 후 다음에 표시 될 페이지를 제어 할 수 있습니다.

나는 간단한 체크 박스를 사용하여 (모델 맵에 키 "에서는 myBoolean") 부울을 수정하려고 :

<form:checkbox id="_myboolean_id" path="myBoolean"/> 

그러나, 나는 스프링 MVC에 새로운 오전으로 내가 여기에 몇 가지 어려움이있다. Boolean 객체는 양식지지 객체의 속성이 아닙니다. 내가 그것을 액세스하려고한다면 다음과 같은 예외가 (물론) 발생합니다 :

잘못된 속성을 '에서는 myBoolean'콩 클래스 [de.cm.model.Person]의 : 콩 재산 '에서는 myBoolean'입니다하지 읽을 수 없거나 에 잘못된 getter 메서드가 있습니다. getter의 반환 형식이 매개 변수 형식과 일치합니까?

모델 맵의 값에 직접 액세스 할 수 있습니까? 지금 당장 상상할 수있는 유일한 해결책은 클래스 Person과 래퍼 객체의 일종이며, 새로운 폼 보조 객체로 사용되는 추가 속성입니다. 그러나 이것은 IMHO 간단한 작업을 위해 더 많은 작업입니다. 더 나은 해결책이 있습니까?

답변

2

당신은 사용자 지정 양식 필드를 만들 수 있습니다 :

<input type="checkbox" name="myBoolean"/> 

을 그리고 컨트롤러 포스트 방법에 추가 매개 변수 지정

public ModelAndView savePerson(@ModelAttribute("person") Person person, @RequestParameter ("myBoolean") Boolean myBoolean) 
관련 문제