2013-06-20 75 views
5

Tôi muốn chia sẻ sự cố của tôi với bạn.Cách chuyển dữ liệu từ <form:select> Spring MVC

tôi đã xây dựng trên trang jsp và sử dụng trên trang web của tôi một số <form:select> nó sử dụng <form:select> để trích xuất và đưa ra dữ liệu từ DB khi tôi yêu cầu các trang search.jsp và người sử dụng phải chọn một:

<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> 

tôi cần phải vượt qua những gì người sử dụng lựa chọn theo yêu cầu của tham số để điều khiển của tôi, đây là mã của điều khiển:

@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"; 
     } 


} 

như bạn có thể thấy tôi SecondActionPage() phương pháp sử dụng @RequestParam chú thích để có được thông số từ url và sau khi xác nhận chúng và chuyển chúng sang phương thức khác để trích xuất dữ liệu tương ứng trên các tham số yêu cầu ... Nhưng vấn đề là tôi không thể truyền chúng. Nó chỉ cho tôi như thế này http://localhost:8080/controller/result? và sau đó? không có gì đi qua. Làm thế nào tôi có thể vượt qua tất cả các thông số được chọn của tôi từ serach.jsp cảm ơn bạn.

Trả lời

10

Tôi tin rằng bạn nên sử dụng <form:select> bên trong <form:form>.

Nó sẽ giống như thế này:

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; 
    } 
} 

Hope this helps .

+0

đã giúp tôi, nhưng cần tạo đối tượng 'lệnh' mới cho tất cả thuộc tính' Tìm kiếm' của tôi –

Các vấn đề liên quan