sitemesh의 ParameterDecoratorMapper를 사용할때 파라미터로 decorator 와 confirm 을 넘겨야 하는데 jsp 페이지에서 파라미터를 사용하여 view를 결정하는 것은 어쩔수 없지만 Controller에서 파라미터를 유지하는 것이 문제였다.
현재 Controller는 MultiActionController 와 SimpleFormController를 사용하고 있는데SimpleFormController에는 referenceData(HttpServletRequest request) 함수를 작성하여
protected Map referenceData(HttpServletRequest request, Object command, Errors errors)
throws Exception { Map map = new HashMap(); String decorator = RequestUtils.getStringParameter(request, "decorator",""); String confirm = RequestUtils.getStringParameter(request, "confirm",""); map.put("decorator", decorator); map.put("confirm", confirm); return map; }
와 같이 하면 되는데...
MultiActionController에는 referenceData가 없다.
그래서 아래와 같이 handleRequestInternal를 재작성하여 referenceData함수를 만들었다.
package com.edutec.spring.controller;
import java.util.HashMap; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.RequestUtils; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
/** * @author 장기창 * @since 2006. 12. 08 */ public class DecoratorMultiActionController extends MultiActionController {
@Override protected ModelAndView handleRequestInternal( HttpServletRequest request , HttpServletResponse response) throws Exception { ModelAndView mv = super.handleRequestInternal(request, response); Map modelMap = referenceData(request); mv.addAllObjects(modelMap); return mv; } protected final Map referenceData(HttpServletRequest request) throws Exception { String decorator = RequestUtils.getStringParameter(request, "decorator",""); String confirm = RequestUtils.getStringParameter(request, "confirm",""); Map map = new HashMap(); map.put("decorator", decorator); map.put("confirm", confirm); return map; } }
그리고 기존에 MultiActionController를 상속받았던 Controller를 아래와 같이DecoratorMultiActionController를 상속받는다.
public class BoardController extends DecoratorMultiActionController {
}
출처 : http://blog.kichang.com/22 |