Spring の「forward:」プレフィックスを使用して、あるコントローラから受信したリクエストを 2 番目のコントローラに転送しようとしています。ただし、期待どおりにリクエストを2番目のコントローラーに転送する代わりに、リクエストは最初のコントローラーによって何度も処理されます(StackOverflowErrorを受け取るまで)。これは、「/ app/pong」を何らかの相対パスとして扱っているのではないかと思いましたが、なぜそうなるのかはわかりません。「forward:」がどのように機能するかを誤解していますか? 私がここで見逃しているものはありますか?
コントローラー:
@Controller
public class ControllerOne {
@RequestMapping(value = "/ping", method = RequestMethod.GET)
public String doPing(HttpServletRequest request) {
log.debug("Ping?");
return "forward:/app/pong";
}
}
@Controller
public class ControllerTwo {
@RequestMapping(value = "/pong", method = RequestMethod.GET)
public String doPong(HttpServletRequest request) {
log.debug("Pong!");
return "pong";
}
}
サーブレット マッピング:
<servlet-mapping>
<servlet-name>test-servlet</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
リゾルバーを表示:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>