【发布时间】:2014-07-24 19:15:03
【问题描述】:
我有以下 Spring 控制器:
@Controller
public class TypoWorkflowController {
@RequestMapping(value = "/workflow/typo-workflow/moreInfo", method = RequestMethod.GET)
public String serveMoreInfo(@RequestParam(value = "taskId", required=false) String taskId, ModelMap modelMap) {
return "typo-workflow-more-info";
}
}
我的 tiles-def 文件包含:
<definition name="typo-workflow-more-info" template="/WEB_INF/jsp/workflow/typo-workflow/moreInfo.jsp"/>
我的 JSP 是普通的旧 HTML。
当我点击 url /workflow/typo-workflow/moreInfo 时,Tomcat 会抛出一个 StackOverflowError。
当我进入调试模式时,我看到我首先点击了我的控制器,正如我所期望的那样,但随后我点击了另一个控制器,方法是:
@Controller
@Order(value = Ordered.LOWEST_PRECEDENCE)
public class ContentServingController {
/* ... */
@RequestMapping({"/*", "/**/*"})
public ModelAndView serveContent(HttpServletResponse response, ModelMap model) {
/* ... */
}
}
当我四处寻找时,它 seeeeeeemed 就像我们在那里响应/WEB_INF/jsp/workflow/typo-workflow/moreInfo.jsp 的请求一样,但是对于以相同方式操作的其他控制器(返回一个查看名称)。
那么,谁能给我一些调试的指针。为什么我要为 JSP 打一个控制器呢? JSP 不应该是一个小 servlet 本身吗?
【问题讨论】:
-
您的 HTML 中是否有任何可能导致对另一个控制器的第二次请求的引用?在调试期间,您确实检查了同一个线程正在调用您的控制器。
-
查看日志可能会有所帮助:stackoverflow.com/questions/6468999/enabling-logging-in-spring ContentServingController 的目的是什么。也许有更好的方法来实现它的功能。