복붙노트

[SPRING] <form : select>에서 데이터를 전달하는 방법 Spring MVC

SPRING

에서 데이터를 전달하는 방법 Spring MVC

나는 당신과 나의 문제를 공유하고 싶다.

jsp 페이지를 기반으로하여 내 페이지에서 를 사용하여 를 사용하여 search.jsp 페이지를 요청할 때 DB에서 데이터를 추출하고 렌더링하며 사용자는 하나를 선택해야합니다.

<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 annotation을 사용하여 url에서 매개 변수를 가져온 후 유효성을 검사 한 다음 요청 매개 변수에 해당하는 데이터를 추출하는 다른 메서드로 전달합니다.하지만 문제는이를 전달할 수 없다는 것입니다. 그냥 http : // localhost : 8080 / controller / result와 같은 것을 보여 줍니까? 후? 아무것도 지나치지 마라. serach.jsp에서 선택한 모든 매개 변수를 어떻게 전달할 수 있습니까?

해결법

  1. ==============================

    1.나는 를 안에 사용해야한다고 생각한다.

    나는 를 안에 사용해야한다고 생각한다.

    다음과 같이 보입니다.

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

    희망이 도움이됩니다.

  2. from https://stackoverflow.com/questions/17218693/how-to-pass-data-from-formselect-spring-mvc by cc-by-sa and MIT license