如何重定向表单控制器并在jsp中获取值

如何重定向表单控制器并在jsp中获取值,jsp,spring-mvc,jstl,Jsp,Spring Mvc,Jstl,这里forgotUser是一个映射的键,我在控制器的方法中设置了它,它重定向到message.jsp,现在我如何在message.jap中使用这个映射来显示该映射的值。我正在使用jstl库 控制器方法如下: http://localhost:8080/LACASServer/message.jsp?forgotUser=Mail+has+been+sent+to+your+mail+address @RequestMapping(value=“/forgotPWD”,params=“usern

这里forgotUser是一个映射的键,我在控制器的方法中设置了它,它重定向到message.jsp,现在我如何在message.jap中使用这个映射来显示该映射的值。我正在使用jstl库

控制器方法如下:

http://localhost:8080/LACASServer/message.jsp?forgotUser=Mail+has+been+sent+to+your+mail+address
@RequestMapping(value=“/forgotPWD”,params=“username”,method=RequestMethod.POST)
公共字符串forgotPassword(@RequestParam(value=“username”,required=false)字符串用户名,映射){
System.out.println(“forgotPasswordUser”+用户名);
ResetPasswordLog ResetPasswordLog;
User forgotPasswordUser=usersService.findUser(用户名);
map.put(“forgotUser”,“邮件已发送到您的邮件地址”);
if(forgotPasswordUser==null){
返回“重定向:/login.jsp?login\u error=1”;
}
其他的
{   
整数uid=forgotPasswordUser.getId();
resetPasswordLog=usersService.SetTemplash(uid);
字符串TEMPHASH=resetPasswordLog.getEmphasish();
字符串url=Utility.serverURL+“忘记/索引?uid=“+uid+”&token=“+TEMPHASH;
System.out.println(url);
System.out.println(Utility.mailResetSubject);
mailSender.sendMail(实用程序.mailFrom,“romijain3186@gmail.com,Utility.mailResetSubject,url);
返回“redirect:/message.jsp”;
}
}

您需要控制器方法(如上所示)来指定“视图”本身(而不是像当前那样使用重定向)。因此,返回值应该是一个与
message.jsp
的视图名称相对应的字符串。然后,您可以将映射添加到模型中,它将在JSP中可用。例如

@RequestMapping(value = "/forgotPWD",params="username", method = RequestMethod.POST)
            public String forgotPassword(@RequestParam(value = "username", required = false) String username,Map<String, Object> map) {
                System.out.println("forgotPasswordUser"+username);
                ResetPasswordLog resetPasswordLog;
                User forgotPasswordUser = usersService.findUser(username);
                map.put("forgotUser","Mail has been sent to your mail address");
                if(forgotPasswordUser==null){
                    return "redirect:/login.jsp?login_error=1";
                }
                else
                {   



                    Integer uid=forgotPasswordUser.getId();
                    resetPasswordLog=   usersService.setTempHash(uid);
                    String TEMPHASH= resetPasswordLog.getTempHash();
                    String url=Utility.serverURL+"forgot/index?uid="+uid+"&token="+TEMPHASH;
                    System.out.println(url);
                    System.out.println(Utility.mailResetSubject);
                    mailSender.sendMail(Utility.mailFrom,"romijain3186@gmail.com",Utility.mailResetSubject, url);
                    return "redirect:/message.jsp";


                }

            }
@RequestMapping(value=“/forgotPWD”,params=“username”,method=RequestMethod.POST)
公共字符串forgotPassword(@RequestParam(value=“username”,required=false)字符串用户名,
地图(地图、模型){
[剪报]
map.put(“forgotUser”,“邮件已发送到您的邮件地址”);
addAttribute(“userMap”,map);
[剪报]
返回“message.jsp”;//或仅返回“message”,具体取决于Spring设置
}

然后,在JSP中,通过JSTL:${userMap.forgotUser}

访问映射,谢谢nickdos:U,对了,但我只需要使用redirct。但我得到的解决方案是:在控制器中,我使用返回“redirect:/message.jsp?message=1”;在jsp as
  • 中,您的密码已被更改
  • 这实际上是我的第一个建议,但后来我注意到您问:“如何在message.jap中使用此映射”。。。所以我试图明确地回答这个问题,${param.message}只是一个字符串值,而不是一个映射!
    @RequestMapping(value = "/forgotPWD",params="username", method = RequestMethod.POST)
    public String forgotPassword(@RequestParam(value = "username", required = false) String username,
             Map<String, Object> map, Model model) {
        [snip]
        map.put("forgotUser","Mail has been sent to your mail address");
        model.addAttribute("userMap", map);
        [snip]
        return "message.jsp"; // or just "message" depending on Spring settings
    }