如何从<form:select> Spring MVC </form:select>传递数据

时间:2013-06-20 16:16:51

标签: spring jsp model-view-controller spring-mvc controller

我想和你分享我的问题。

我在jsp页面上构建并在我的页面上使用<form:select>部分<form:select>,当我请求页面search.jsp时,它使用<form action="result" method="get" > <table> <tr> <th>Date fro DB:</th> <td><form:select path="listOfDates"> <form:option value="NONE"> --SELECT--</form:option> <form:options items="${listOfDates}"></form:options> </form:select> </td> </tr> <tr> <th>Name of company from DB:</th> <td><form:select path="listOfInstitutionsNames"> <form:option value="NONE"> --SELECT--</form:option> <form:options items="${listOfInstitutionsNames}"></form:options> </form:select> </td> </tr> <tr> <th>Type of company from DB:</th> <td> <form:select path="listOfInstitutionsTypes"> <form:option value="NONE"> --SELECT--</form:option> <form:options items="${listOfInstitutionsTypes}"></form:options> </form:select> </td> </tr> <tr> <td><input type="submit" value="Извлечь"/></td> </tr> </table> </form> 从数据库中提取和呈现数据,用户必须选择一个:

@Controller
public class HomeController{


    @Autowired
    private ControllerSupportClass controllerSupportClass; 


        @RequestMapping(value="/search", method=RequestMethod.GET)
        public String search(Model model) {

            List<Date> listOfDates = controllerSupportClass.findAllDatesForm();
            List<String> listOfInstitutionsNames = controllerSupportClass.findAllInstitutionsForm();
            List<String> listOfInstitutionsTypes = controllerSupportClass.findAllTypesForm();
            model.addAttribute("listOfInstitutionsTypes", listOfInstitutionsTypes);
            model.addAttribute("listOfInstitutionsNames", listOfInstitutionsNames);
            model.addAttribute("listOfDates", listOfDates);

            return "search";

        }


        @RequestMapping(value ="/result", method=RequestMethod.GET)
        public String SecondActionPage(@RequestParam String particularDate, 
                                       @RequestParam String nameOfInstitution, 
                                       @RequestParam String typeName,
                                       Model model) throws Exception {


                if(particularDate !="" && nameOfInstitution.trim() !="" && typeName.trim()=="") {                   
                    controllerSupportClass.findWithDateAndName(nameOfInstitution, particularDate, model);                   
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() =="" && typeName.trim() !="") {                    
                    controllerSupportClass.findWithAddedDateAndType(typeName, particularDate, model);                   
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() =="" && typeName.trim() ==""){         
                    controllerSupportClass.findWithAddedDate(particularDate, model);    
                } else if(particularDate.trim() !="" && nameOfInstitution.trim() !="" && typeName.trim() !="") {
                    throw new Exception("Search by choose all parameters is not exceptable");   
                } else {    
                    throw new Exception("You didn't put any search parameters");    
                }           
            return "search";
        }


}

我需要将用户选择的请求参数传递给我的控制器,这里是控制器的代码:

SecondActionPage()

正如您可以看到我的@RequestParam方法使用http://localhost:8080/controller/result?注释从url获取参数并在验证它们之后将它们传递给另一个方法以提取与请求参数相对应的数据...但问题是我无法通过它们。它只是向我显示serach.jsp之后和之后?什么都没有过如何从{{1}}传递我所有选择的参数谢谢。

1 个答案:

答案 0 :(得分:17)

我相信你应该在<form:select>内使用<form:form>

它应该是这样的:

search.jsp的:

<form:form modelAttribute="myform" action="result" method="get" >
  <form:select  path="nameOfInstitution">
    <form:option value="NONE"> --SELECT--</form:option>
    <form:options items="${listOfInstitutionsNames}"></form:options>
  </form:select>
  ...
</form:form>

HomeController.java:

@RequestMapping(value = "/search", method = RequestMethod.GET)
public String search(Model model) {
  ...
  model.addAttribute("myform", new MyForm());
  return "search";
}

@RequestMapping(value = "/result", method = RequestMethod.GET)
public String SecondActionPage(@RequestParam String nameOfInstitution,
    Model model,
    @ModelAttribute("myform") MyForm myform)
    throws Exception {
  ...
}

MyForm.java:

public class MyForm {
  private String nameOfInstitution;

  public String getNameOfInstitution() {
    return nameOfInstitution;
  }

  public void setNameOfInstitution(String nameOfInstitution) {
    this.nameOfInstitution = nameOfInstitution;
  }
}

希望这有帮助。