jsp - 模型从 spring Controller 传递到 jsp,添加了一些属性并传递到另一个 Controller ,不起作用

标签 jsp spring-mvc modelattribute

该过程是:在表格中显示收到的消息列表,每条消息前面都有一个回复链接。按回复将转到此 Controller :

    @RequestMapping("/createMessage")
public String createMessage(@RequestParam("receiver") String receiver, HttpSession session, Model model){
  try{  

    Message message = new Message();
    //sender, Date, and receiver are known and are added to the object      

    model.addAttribute(message);

    return "newMessage";

  } catch (Exception e){
        model.addAttribute("message", "Can't create message!");
        return "error"; 
  }

newMessage.jsp 如下。它接收模型,因为 from:、To: 和 Date: 字段已正确填充:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"   "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Send Message</title>
</head>
<body>
<form:form modelAttribute="message" method="POST" action="sendMessage">
<table border="1">
<tr>
  <th>To: </th><td>${message.userName}</td>
</tr>
<tr>
  <th>from: </th><td>${message.fromUser}</td>
</tr>
    <tr>
  <th>Date: </th><td>${message.messageDate}</td>
</tr>
<tr>
  <th>Message</th>
  <td>
    <form:textarea path="message"/>
  </td>            

</table>
<input type="submit" value="send Message">
</form:form>  

</body>
</html>

当按下发送按钮时,以下 Controller 负责在数据库中创建对象(使用 Hibernate),但它给出了“fromUser 列不能为空”的错误。显示与数据库的连接正在工作,但对象未传递到此 Controller 。为什么?

@RequestMapping("/sendMessage")
public String sendMessage(HttpSession session,@ModelAttribute("message") Message message, Model model){

    try{
    MessageDAO mDao = new MessageDAO();
    Message message2 = mDao.create(message);

    model.addAttribute("message", "Message was sent");
    return "success";

    } catch(Exception e){
        model.addAttribute("message", "Can't create message!");
        return "error";
    }


}

最佳答案

调试您的 sendMessage 例程。您的表单仅包含消息字段,其他字段从技术上讲不是表单的一部分。要么您想要将消息对象存储到 session 中,以便 java bean 在两个请求中幸存,要么您可以将 userName、fromName 等重复作为隐藏字段,以便将它们映射到为 sendMessage 创建的新请求 bean。

关于jsp - 模型从 spring Controller 传递到 jsp,添加了一些属性并传递到另一个 Controller ,不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13787681/

相关文章:

jsp - 消息 java.lang.IllegalStateException : No output folder

jsp - 如何测试 <jsp :doBody/> is empty/null in a tag file?

spring - Java EE FrontController 与 Spring 的 DispatcherServlet

spring - @ModelAttribute 总是将 Boolean 映射为 false

java - Spring MVC 可以在@RequestMapping 之后调用@ModelAttribute 吗?

jsp - 在 jsp 页面中阅读阿拉伯语有问题吗?

html - JSP 页面中缺少 HTML 注释

java - 一些 Controller 的 Spring mvc 过滤器

java - 我可以阻止用户访问 Spring Security 中的某些内容的功能是什么