在Spring MVC中,如何存储用户输入并在以后重现?

时间:2014-10-31 09:31:11

标签: java spring jsp variables spring-mvc

在我的一个JSP中,我让用户输入一些关于他们自己的细节。当他们点击提交时,我想要重定向到的页面,记住变量然后将其打印出来。

e.g。

(register.jsp) Username: Barney
(welcome.jsp) Welcome Barney
(register.jsp) Username: Vernon
(welcome.jsp) Hello Vernon

当前代码:

@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(ModelMap map, HttpSession session,
@RequestParam(value="givenUser") String givenUser) {   
session.setAttribute("ans", givenUser);
map.addAttribute("displayAnswer", givenUser);
map.put("givenUser", givenUser);
return "register";
}
}

欢迎请求映射:

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

然后在welcome.jsp中我有:Hello $ {givenAnswer}

register.jsp,一旦点击里面的链接,就转到welcome.jsp

这是register.jsp

    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <%@ page isELIgnored="false" %>
    <html>
    <head>
        <title>SPRING ####### WEB</title>
    </head>
    <body>
    <h2>SUCCESSFUL REDIRECTION!!!</h2>
    <p>Register</p>

    <form action="/HelloSpring/welcome" method="post">
      Username:  <input type="text" name="givenUser" >
      Firstname: <input type="text" name="givenPassword">
      Surname:   <input type="text" name="givenSurname" >
      Password:  <input type="password" name="givenPassword">
                 <input type="submit" value="Submit">
    </form>

    </body>
    </html>

的welcome.jsp

<%@taglib uri="http://www.springframework.org/tags/form" prefix="spring"%>
<%@ page isELIgnored="false" %>
<html>
<head>
    <title>SPRING ####### WEB</title>
</head>
<body>
<h2>Spring Page Redirection</h2>
<p>Welcome ${givenUser}, your password is ${givenPassword}</p>


</body>
</html>

所以我的问题是我没有包含的内容,因为当用户提交详细信息时,它当前只会触发空白

3 个答案:

答案 0 :(得分:1)

您可以将userinput属性发布到Controller,然后将值发送回ModelMap。

示例:

@RequestMapping("/hello")
public String hello1(ModelMap map,@RequestParam String userInput){
    /*your code goes here*/     
    map.put("userInput",userInput);
    return "jsp1";   //first jsp name
}

并使用表达式语言在jsp中使用它。

您好{userInput}!!

答案 1 :(得分:0)

<input>标记中的名称是表单提交时用作请求参数名称的内容。

您至少应该更改控制器代码以使用正确的参数名称:

@RequestMapping(value = "/answer", method = RequestMethod.GET)
public String answer(ModelMap map, HttpSession session,
        @RequestParam("howareyou") String givenAnswer) {

                session.setAttribute("ans", givenAnswer);
                map.addAttribute("displayAnswer", givenAnswer);
                map.put("givenAnswer", givenAnswer);      

            return "answer";
        }

}

我还删除了未使用的参数req,因为Spring直接为您提供了HttpSession。在模型中两次添加相同的对象通常没用。但我认为你不确定什么是正确的并尝试过两者 - 其中任何一个都是正确的并且足够了: - )

答案 2 :(得分:0)

SUCCESS!显然它需要$ {param.elc}。为什么这不是任何教程,怎么没人知道呢?我仍然有点怀疑,但它按要求做了。 感谢所有帮助过的人!