0

私はスプリング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"/>
4

3 に答える 3

0

はい、コントローラーは文字列"welcome"を返し、ビューリゾルバーはそれを変更して"jsps/welcome.jsp"これを再度メソッドを呼び出しています。

他のものに変更@requestmapping("jsps/welcome.jsp")します。通常、私たちはwelcome.htmこのようなものを持っています

次にヒットwelcome.htmするとメソッドが呼び出されhandleRequest、メソッドが戻っ"welcome"てビューリゾルバーがそれをに変換し"jsps/welcome.jsp"ます。

于 2012-12-22T20:35:44.043 に答える
0

2つのこと

  1. URLマッピングの場合、*。jspを使用しない方がよいでしょう。jsps/welcomeやjsps/welcome.htmのようなものを使用してください
  2. ビューを返すには、ModelAndVeiwを使用します。

アップデート

これらの変更を行う

@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.
于 2012-12-23T04:59:43.877 に答える
0

理由は明らかです。コントローラメソッドを呼び出すリクエストjsps/welcome.jsp。「welcome」という名前のビューに転送され、URLに再度解決されてjsps/welcome.jsp、メソッドが再度呼び出されます。したがって、StackOverFlowがスローされるまで続きます。

解決策は、URLマッピングを次のurl without .jspような別のものに変更することです

@Requestmapping("/welcome")
public String handleRequest(){
   system.out.println("inside the handler");
   return "welcome";
}
于 2012-12-23T05:03:24.647 に答える