【问题标题】:Spring MVC pass model to view then to controllerSpring MVC 将模型传递给视图,然后传递给控制器
【发布时间】:2015-05-20 05:39:00
【问题描述】:

我的代码卡住了,我正在尝试传递对象“学生”的信息。我的场景是这样的:

  1. 注册表(填写详细信息,然后按提交按钮转到下一页)

  2. 从这个视图中,模型将被打印出来,然后再次按下下一步按钮。

  3. 第三页将再次显示信息。

问:我怎样才能将同一个对象传递给其他视图?

我的代码是这样的。

注册视图:

<form action="/HamburgerProject/stuSubmitAdmissionForm.html" method="post">
    <table>
    <tr>
        <td>Name:</td>          <td><input type="text" name="studentName"></td></tr>
    <tr>
        <td>Age:</td>           <td><input type="text" name="studentAge"></td></tr>
    <tr>
    </table>
    <input type="submit" value="submit this">
</form>

第一次信息查看:

<form action="/HamburgerProject/stuSubmitAdmissionForm.html" method="post">
<table>
    <tr>
        <td>Student's Name :</td>
        <td>${student.studentName}</td>
    </tr>
    <tr>
        <td>Student's Age :</td>
        <td>${student.studentAge}</td>
    </tr>
</table>
    <input type="submit" value="send"/>
</form>

第二信息查看:

<table>
    <tr>
        <td>Student's Name :</td>
        <td>${student.studentName}</td>
    </tr>
    <tr>
        <td>Student's Age :</td>
        <td>${student.studentAge}</td>
    </tr>
</table>

我的控制者:

@RequestMapping(value="/stuAdmissionForm.html", method = RequestMethod.GET)
public ModelAndView getStudentAdmissionForm() {
    ModelAndView model = new ModelAndView("AdmissionForm");
    return model;

}

@RequestMapping(value="/stuSubmitAdmissionForm.html", method = RequestMethod.POST) 
public ModelAndView submitModelAttributeAnnotationAdmissionForm(@ModelAttribute("student") Student student) {

    ModelAndView model = new ModelAndView("AdmissionSuccess");
    return model;
}

@RequestMapping(value="/stuDisplayForm.html", method = RequestMethod.POST) 
public ModelAndView getStudent(Student student) {

    ModelAndView model = new ModelAndView("NewForm");
    model.addObject(student);

    return  model;
}

在尝试将信息从第二个视图重新显示到第三个视图时,对象 Student 没有被传递。

【问题讨论】:

  • 第二种方法是什么?这里缺少将student 对象传递给model 对象吗?
  • 嗨 Manu,第二种方法是从注册表中获取 Student 对象,然后将其显示在第二个信息视图上。

标签: java spring model-view-controller


【解决方案1】:

您的第一个信息视图中没有要提交的字段。您必须将值添加到隐藏文件:

<form action="/HamburgerProject/stuSubmitAdmissionForm.html" method="post">
<table>
    <tr>
        <td>Student's Name :</td>
        <td>${student.studentName}</td>
    </tr>
    <tr>
        <td>Student's Age :</td>
        <td>${student.studentAge}</td>
    </tr>
</table>
    <input type="hidden" name="studentName" value="${student.studentName}">
    <input type="hidden" name="studentAge" value="${student.studentAge}">
    <input type="submit" value="send"/>
</form>

【讨论】:

  • 您好 Jens,感谢您的回答,只是一个简短的说明,这是否意味着一旦将对象传递给视图,它就已经消失了?提前感谢您的考虑,这是我第一次尝试做一个网络应用程序,不是一个程序员。 TIA。
  • @sdcz6 是的,模型将根据从表单发送的值创建。
  • 嗨 Jens,它确实有效。嗯,但这里的缺点是,如果我有很多属性,那么我需要重新提交每个字段,对吗?单例可以避免所有属性的重新分配吗?
  • @sdcz6 不,您必须重新提交所有属性:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多