如何在Spring,JSP中将表单值从jsp文件发送到控制器?

时间:2014-05-04 12:30:35

标签: java hibernate jsp spring-mvc

我正在尝试设计一个网页,允许用户对每个人的个人资料发表评论。为此,登录用户单击其他用户的名称并查看他/她的详细个人资料页面,并可以对该页面发表评论。因此 Comment 表有两个外键列,如 commentator_id owner_id 。当用户对其他用户的个人资料发表评论时,评论表将保留用户的ID和文本,评论标题等。

这是我的控制器

 @RequestMapping(value = "/comment", method = RequestMethod.GET)
    public ModelAndView comment(Principal principal, String username, @ModelAttribute Comment c) {

        ModelAndView result = new ModelAndView("result");

        User user = userService.findByUsername(username); // the user who gets the comment

        String username2 = (String) ((Authentication) principal).getPrincipal(); //logged in user who makes the comment
        User authenticatedUser = userService.findByUsername(username2);


        c.setCommentator(authenticatedUser);;
        c.setOwner(user);


        user.getComments().add(c);

        userService.save(host);

        String message = "Com was successfully added.";
        result.addObject("message", message);
        return result;

    }

我的 jsp 文件:

<body>
  <form method="post" action="comment">
            <center>
            <table border="1" width="30%" cellpadding="5">
                <thead>
                    <tr>
                        <th colspan="2">Leave a referance</th>
                    </tr>
                </thead>
                <tbody>
                <tr>
                        <td>Title</td>
                        <td><input type="text" name="title" value="" /></td>
                    </tr>
                    <tr>
                        <td>Text</td>
                        <td><input type="text" name="message" value="" /></td>
                    </tr>

       // ...

                </tbody>
            </table>
            </center>
             <a href="<c:url value="/comment"><c:param name="username" value="${user.getUsername()}"/></c:url>">Send</a>
                      </form>
</body>

通过这种方式,用户可以对其他用户的个人资料进行评论,但评论表仅保留用户的ID,而不保留我从表单中获得的文本,标题和其他值。我怎样才能在db?中保留表单值?

1 个答案:

答案 0 :(得分:0)

使用ModelAttribute注释

   public ModelAndView getMessage(@ModelAttribute("s") Student s){
       ModelAndView model=new ModelAndView("Successpage");
     return model;
   }