我有spring mvc控制器,包含类似
的方法@requestmapping("jsps/welcome.jsp")
public String handleRequest(){
system.out.println("inside the handler");
return "welcome";}
当我尝试运行welcome.jsp页面时,我发现堆栈溢出,似乎页面转到控制器然后控制器返回页面然后它会再次出现等等。
我的弹簧配置是
<bean id="viewResolver"
class="------"
<property name="prefix">
<value> /jsps/ </value>
</property>
<property name="suffix">
<value> .jsp </value>
</property>
和urlmapping
<map>
<entry key="jsps/welcome.jsp">
<ref bean="mycontroller"/>
答案 0 :(得分:0)
是的,Controller正在返回字符串"welcome"
,并且视图解析器正在将其修改为"jsps/welcome.jsp"
,这再次调用该方法。
将@requestmapping("jsps/welcome.jsp")
更改为其他内容。通常我们有welcome.htm
这样的东西
然后点击welcome.htm
它将调用handleRequest
方法,方法将返回"welcome"
并查看解析程序将其转换为"jsps/welcome.jsp"
。
答案 1 :(得分:0)
两件事
<强>更新强>
进行这些更改
@requestmapping("jsps/welcome")
public String handleRequest(){
system.out.println("inside the handler");
return new ModelAndView("yourpathtojspfile");} // can be "jsps/welcome"
在这里,此页面将返回视图(使用'jsps / welcome',您将获得welcome.jsp)
当您返回字符串时,您拥有的选项是使用
return "redirect:someUrl"; //But this will not return a view, instead search for the mapping someUrl.
答案 2 :(得分:0)
原因很明显。对jsps/welcome.jsp
的请求调用控制器方法,该方法转发到名为“welcome”的视图,该视图再次解析为url jsps/welcome.jsp
,再次调用该方法。所以它继续下去,直到抛出StackOverFlow。
解决方案是将网址映射更改为另一个url without .jsp
,如
@Requestmapping("/welcome")
public String handleRequest(){
system.out.println("inside the handler");
return "welcome";
}