Spring MVC 에서 ModelAndView 관련 문의
안녕하세요..
Anyframe의 Spring MVC 샘플을 보면..
bean name="/baseCode.do"
class="anyframe.ever.basecode.web.BaseCodeController">
property. name="baseCodeService" ref="baseCodeService"/>
property. name="methodNameResolver" ref="paramResolver" />
property. name="success_addView" value="/jsp/ever/viewBaseCode.jsp"/>
property. name="success_add" value="/baseCode.do?method=list"/>
property. name="success_get" value="/jsp/ever/viewBaseCode.jsp" />
property. name="success_get" value="/jsp/ever/viewBaseCode.jsp" />
property. name="success_update" value="/baseCode.do?method=list" />
property. name="success_list" value="/jsp/ever/listBaseCode.jsp" />
property. name="success_delete" value="/baseCode.do?method=list" />
/bean>
이런식으로 구성되던데..
만약에 property name="success_get" value="/jsp/ever/viewBaseCode.jsp" />
을 변형하여 다른 페이지를 호출하려고 하면..
XML 및
JAVA : return new ModelAndView(this.getSuccess_get());
을 어떤 식으로 구성해야 될지 문의드립니다.
Struts 만 쓰다 Spring MVC 로 새로운 프로젝트를 하려다 보니..궁금합니다.


답변입니다.
안녕하세요?
가고자 하는 페이지를 변경하고 싶으실 때에는
JAVA(Controller Class)에서는 값을 변경하지 않고 XML에 property로 정의되어 있는 곳에서 value를 변경하시면 됩니다.
* Controller.java
return this.getSuccess_get(); (그대로 유지하고 해당 getter의 이름과 일치하는 property명을 xml파일에서 변경)
* servlet.xml
<property name="success_get" value="출력하고자 하는 view 이름" />
ex> <property name="success_get" value="/WEB-INF/jsp/user/getUser.jsp" />
<property name="success_get" value="getUser.do" />
저의 질문은 다음과 같은 것이 었습니다.
같은 Controller.java 에서
public ModelAndView get(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView(this.getSuccess_get());
}
public ModelAndView get2(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return new ModelAndView(this.getSuccess_get2());
}
두가지가 있는 경우에
property name="success_get" value="/jsp/ever/viewBaseCode.jsp" />
property name="success_get2" value="/jsp/ever/viewBaseCode2.jsp" />
이런식으로 구현을 하고 싶었는데.. success_get2 은 인식이 안되네여..
Controller 를 따로 만들어야 되나요..
struts 에서는 return mapping.findForward 에서 원하는 문자열로 되던데..
AnyframeFormController 메뉴얼을 보면
또한, 리턴되는 view 이름을 자바 클래스에 넣지 않고 xml 파일에 빼내어 작성하고 있는데 매번 setter injection을 통해 값을 추출해 내야하는 번거로움을 없애기 위해 AnyframeFormController는 success_addView, success_add, success_get, success_update, success_list, success_delete의 attribute에 대해 setter, getter가 정의되어 있다. 이에 사용자는 알맞은 attribute를 사용하여 view 이름을 정의할 수 있으며 다른 이름으로 정의할 시에 setter injection을 통해 추출할 수 있다.
위와 같이 AnyframeFormController는 MultiActionController의 기능을 사용할 수 있으며 SimpleFormController의 double submit 방지 기능도 사용할 수 있다. 새로운 폼을 출력할 때 formBackingObject 메소드를 오버라이드 해서 구현해야 하는데 해당 요청에 대해서는 showNewForm 값을 true로 설정해 준다.
잘 이해가 안갑니다.