복붙노트

[SPRING] 한 컨트롤러 메서드에서 다른 컨트롤러 메서드로 리디렉션

SPRING

한 컨트롤러 메서드에서 다른 컨트롤러 메서드로 리디렉션

내 응용 프로그램에서 Spring 3 및 Tiles 2를 사용하고 있으며 리디렉션과 관련하여 약간의 문제가 있습니다. 가급적이면 Controller1 메서드에서 Controller2 메서드로 호출하거나 리디렉션 할 수는 있지만 지금까지 성공하지 못했습니다.

pageviews.properties 파일에 새 항목을 만들려고했습니다. 그렇게하면 Controller1에서이 이름을 반환 할 수 있으며 xml 파일에서 내 타일 def name을 찾습니다.

createRejectionEmail.(parent)=tilesView
createRejectionEmail.url=createRejectionEmail.page

redirectRejectionEmail.(class)=org.springframework.web.servlet.view.RedirectView
rediectRejectionEmail.contextRelative=true
redirectRejectionEmail.url=createRejectionEmail.page

그러나 아래에 표시된 것처럼 돌아가려고하면 URL에 createRejectionEmail이 포함됩니다. 대신 타일 defs에서 조회를 수행하는 대신 URL의 일부로 createRejectionEmail이 포함됩니다.     mav.setViewName ( "redirectRejectionEmail");     돌아 오는 mav;

<definition name="createRejectionEmail.page" extends="brandedLayout">
  <put-attribute name="targetFunction" value="status" />
  <put-attribute name="content" value="/WEB  INF/jsp/pages/status/createRejectionEmail.jsp" />
</definition>

내 현재 설정은 다음과 같습니다.

<bean id="resourceViewResolver"
class="org.springframework.web.servlet.view.ResourceBundleViewResolver"
p:order="0" p:basename="config.spring.viewresolution.pageviews"/>



<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
   <list>
  <value>/WEB-INF/jsp/**/views.xml</value>
    </list>
</property>
</bean>

어떤 도움이나지도라도 크게 부탁드립니다!

해결법

  1. ==============================

    1.컨트롤러에서 반환 유형을 ModelAndView로 변경하고 아래 코드를 반환 할 수 있습니다. 그러면 요청이 리디렉션되고 컨트롤러에 새 URL을 요청합니다.

    컨트롤러에서 반환 유형을 ModelAndView로 변경하고 아래 코드를 반환 할 수 있습니다. 그러면 요청이 리디렉션되고 컨트롤러에 새 URL을 요청합니다.

    return new ModelAndView("redirect:/myURL");
    

    또는 컨트롤러 메서드에서 HttpServletResponse를 가져 와서 리디렉션을 반환 할 수 있습니다.

    public void myController(HttpServletResponse response){
    response.sendRedirect("/myURL");
    }
    
  2. ==============================

    2.

    @RequestMapping(value = "/timeout", method = RequestMethod.GET)
        public ModelAndView loginForm(HttpServletRequest request,HttpServletResponse response) {
    
    
                    return new ModelAndView("redirect:/app/timeout");
    
        }
    

    이 메소드 핸들러가 호출되면 / app / timeout 컨트롤러로 리디렉션됩니다.

  3. from https://stackoverflow.com/questions/17218856/redirect-from-one-controller-method-to-another-controller-method by cc-by-sa and MIT license