4

私は次のようなハンドラーを備えたSpringMVCコントローラーを持っています:

@RequestMapping(value = "/account/login", method = RequestMethod.GET)
public String login() {
    return "login";
}


@RequestMapping(value = "/account/login", method = RequestMethod.POST, params = "login")
public String login(@RequestParam(value = "username") String username, 
        @RequestParam(value = "password") String password) {

    // do authentication
    return "home";
}

login.htmlページのフォームはaccount/login(同じURL)にPOSTします。認証後、ユーザーをアプリケーションのホームページにリダイレクトして、ユーザーがのwww.mywebappexample.com代わりにアドレスバーに表示されるようにしますwww.mywebappexample.com/account/login。loginメソッドから文字列を返すと、適切なhtmlがレンダリングされますが、表示したいURLがありません。どうすればリダイレクトできますか?

編集:コントローラーの戻り文字列の前に。を付ける必要がありましたredirect:これは、 UrlBasedViewResolverUrlBasedViewResolverをサブクラス化するビューリゾルバーがある場合に機能します。Thymeleafのビューリゾルバーはそれを行いませんが、動作は-> ThymeleafViewResolverです。これが私のservlet-context.xmlです(私はthymeleafを使用しています):

<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/"/>
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML5"/>
</bean>

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver"/>
</bean>

<bean id="viewResolver" class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
    <property name="order" value="1"/>
</bean>
4

2 に答える 2

7

代わりに、タグでリダイレクトを使用できます。これにより、ブラウザウィンドウのURLが更新されます。

return "redirect:home";
于 2012-12-28T23:50:32.263 に答える
0

認証が正常に通過したかどうかを確認してから、リクエストディスパッチャでリクエストを転送します

RequestDispatcher rd = servletContext.getRequestDispatcher("/pathToResource");
 rd.forward(request, response);
于 2012-12-28T23:52:35.343 に答える