1

これが私が直面しているエラーのスクリーンショットです。

問題は、パスワードを忘れた場合にURLに再度追加されることです(添付画像のアドレスバーを参照)。

ここに画像の説明を入力してください

私のコントローラーは以下の通りです:

@Controller
@RequestMapping(value="/forgot-password")
public class ControllerForgotPassword {
@RequestMapping(value = "/email", method = RequestMethod.POST)
    public ModelAndView sendMail(HttpServletRequest request) {
        String email = (String) request.getParameter("email");
        boolean flag=serviceForgotPassword.checkEmail(email);
        ModelAndView modelAndView = new ModelAndView();
        if(flag)
        {
            modelAndView.addObject("message", "Mail has been sent to your mail box");
            modelAndView.setViewName("forgot-password-sucess");
            return modelAndView;
        }
        else
        {
            modelAndView.addObject("message", "Please Enter Valid email address");
            modelAndView.setViewName("forgot-password");
            return modelAndView;
        }
    }
}

forgot-password.jspの内容は次のとおりです。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt"
    uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Forgot-Password</title>
</head>
<body>
<p style="color:red;">${message}</p>
<form action="forgot-password/email" method="POST">
<input type="text" name="email"/>
<input type="submit" value="Send Mail">
</form>
</body>
</html>

メソッドで使用しようとしmodelAndView.setViewName("redirect:/forgot-password-sucess");ましたsendMailが、コントローラーからメッセージを受信できません。

編集 :

<form action="/CabFMS/forgot-password/email" method="POST">それが私のコンテキスト/プロジェクト名であると追加すると、問題なく機能します。

コントローラーマッピングとともに、fromアクションのどこにでもコンテキスト名を追加する必要がありますか?

forgot-password/emailフォームアクションだけでは使えませんか?

助けてください。

よろしく、

アルン

4

1 に答える 1

1

このフォームアクションは、コントローラーと一致するように絶対的である必要があります。現在、相対パスを指定しています。

<form action="/forgot-password/email" method="POST">
              |
           add this leading slash

編集:これは、アプリケーションがルートコンテキストにある場合にのみ機能します。

アプリケーションが別のコンテキストにデプロイされている場合は、そのコンテキストもフォームのアクション属性に追加する必要があります。

より良いアプローチは、相対パスを保持し、コンテキストを含める<base>必要があるページでHTMLタグを使用することです。「<base> htmlタグを使用することをお勧めしますか? 」を参照してください。。私はJSPで次のようなSpringアプリケーションを作成する傾向があります。

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/">

そうすれば、ページ内の相対パスは、どこにいても、正しいコンテキストに対して自然に解決できます。

于 2012-10-31T13:52:36.583 に答える