【问题标题】:How to pass several parameters from one view to another (Spring MVC)如何将多个参数从一个视图传递到另一个视图(Spring MVC)
【发布时间】:2013-12-20 02:55:55
【问题描述】:

将这些参数从一个 jsp 页面传递到另一个页面的最佳方法是什么?

第一个处理方法:

@RequestMapping(value="/search", method = RequestMethod.POST)
public String postSearchStudent(
                    @RequestParam(value = "program.programId") String programId,
                    @RequestParam(value = "rollNumber") String rollNumber,
                    @RequestParam(value = "rollYear") String rollYear,
                    @RequestParam(value = "indexNumber") String indexNumber,
                    Model model) {

    // do something ???

    // Call StudentService to do the searching
    Student student = studentService.search(indexNumber);

    // if student isn't in the db load addStudent.jsp, else load student.jsp
    if (student == null)
        return "addStudent";
    else
        return "student";
}

searchStudent.jsp:

<c:url var="searchUrl" value="/essays/main/student/search" />
<form:form modelAttribute="student" method="POST" action="${searchUrl}">

第二种处理方法:

@RequestMapping(value="/add", method = RequestMethod.GET)
public String getAddStudent(
                    @RequestParam(value = "program.programId") String programId,
                    @RequestParam(value = "rollNumber") String rollNumber,
                    @RequestParam(value = "rollYear") String rollYear,
                    @RequestParam(value = "indexNumber") String indexNumber,
                    Model model) {

        Student student = new Student();
        student.setRollNumber(rollNumber);
        student.setRollYear(rollYear);
        student.setIndexNumber(indexNumber);
        Program program = programService.get(programId);
        student.setProgram(program);
        model.addAttribute("student", student);

        return "addStudent";
}

addStudent.jsp:

<c:url var="saveUrl" value="/essays/main/student/add" />
<form:form commandName="student" method="POST" action="${saveUrl}">

谁能告诉我如何将这 4 个参数(programId、rollNumber、rollYear、indexNumber)从 searchStudent.jsp 传递到 addStudent.jsp?

【问题讨论】:

  • 与您在getAddStudent() 方法中执行此操作的方式相同...

标签: java jsp spring-mvc parameter-passing


【解决方案1】:

为什么不将这些保存在 cookie 中?使用类似 jquery cookie 插件的东西?或者将这些参数作为属性添加到模型对象并将模型传递给视图,或者如果您使用的是 Spring 3.2,请查看 @ControllerAdvice 之类的内容。有很多选择。

【讨论】:

    【解决方案2】:

    查看请求调度程序。您需要将请求转发到 addStudent.jsp。

    http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html

    【讨论】:

      【解决方案3】:

      最好的方法是为此属性创建一个表单

      StudentCriteriaForm

      public class StudentCriteriaForm {
      
          private String programId;
          private String rollNumber;
          private String rollYear;
          private String indexNumber;
      
          //setter && Getter Methods
      }
      

      现在将这个属性绑定到你的jsp,如下所示

      searchStudent.jsp

      <c:url var="searchUrl" value="/essays/main/student/search" />
      <form:form modelAttribute="student" method="POST" action="${searchUrl}" commandName="studentCriteriaForm">
          <form:input path="programId" />
          <form:input path="rollNumber" />
          <form:input path="rollYear" />
          <form:input path="indexNumber" />
          <input type="submit" value="Search" id="btnSearch" >
      </form:form>
      

      控制器

      @RequestMapping(value="/search", method = RequestMethod.POST)
      public String postSearchStudent(@ModelAttribute("studentCriteriaForm") StudentCriteriaForm studentCriteriaForm,
          ModelMap model,HttpServletRequest request) {
          // do something ???
          // Call StudentService to do the searching
          Student student = studentService.search(studentCriteriaForm.getIndexNumber());
          // if student isn't in the db load addStudent.jsp, else load student.jsp
          if (student == null) {
          //here you can pass your parameters to your addStudent.jsp
              model.addAttribute("studentCriteriaForm", studentCriteriaForm);
          return "addStudent";
          } else {
              return "student";
          }   
      }
      

      现在您可以在 addStudent.jsp 页面上获取此参数的值

      <c:url var="saveUrl" value="/essays/main/student/add" />
      <form:form commandName="student" method="POST" action="${saveUrl}">
      <c:out value="${studentCriteriaForm.programId}"></c:out>
      <c:out value="${studentCriteriaForm.rollNumber}"></c:out>
      <c:out value="${studentCriteriaForm.rollYear}"></c:out>
      <c:out value="${studentCriteriaForm.indexNumber}"></c:out>
      

      或者您也可以直接从postSearchStudent() 方法导航到getAddStudent() 方法。 希望这能解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 1970-01-01
        • 1970-01-01
        • 2017-05-20
        • 1970-01-01
        相关资源
        最近更新 更多