2013-06-20 1 views
5

Я хотел бы поделиться с вами своей проблемой.Как передать данные от <form:select> Spring MVC

Я построил на 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 использовать аннотацию, чтобы получить параметры от url и после проверки их и передать их другому методу для извлечения данных, соответствующих параметрам запроса ... Но проблема в том, что я не могу их передать. Это просто показать мне вот так: http://localhost:8080/controller/result? и после? ничего не происходит. Как я могу передать все мои выбранные параметры от serach.jsp спасибо.

ответ

10

Я считаю, что вы должны использовать <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; 
    } 
} 

Надеется, что это помогает ,

+0

помог мне, но вам нужно создать новый объект 'command' для всех моих атрибутов' Search' –