簡體   English   中英

如何將多個參數從一個視圖傳遞到另一視圖(Spring MVC)

[英]How to pass several parameters from one view to another (Spring MVC)

將這些參數從一個jsp頁面傳遞到另一個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?

為什么不將它們保存在Cookie中? 使用類似jQuery cookie插件的東西? 或者將這些參數作為屬性添加到模型對象,然后將模型傳遞到視圖,或者如果使用的是Spring 3.2,請查看類似@ ControllerAdvice的內容。 很多選擇。

簽出請求分派器。 您需要將請求轉發到addStudent.jsp。

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

最好的方法是為此屬性創建一個表單

學生條件表

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()方法。 希望這能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM