봄에 익숙하지 않아 JSP 뷰에서 양식의 데이터를 수집하고 컨트롤러에 양식을 제출할 수있었습니다. 보기에서 aquired 데이터에서, 나는 다른 모델 객체를 포함하는 모델 객체를 인스턴스화하고 있습니다 :많은 @RequestParam 인수에서 Spring Controller 메소드의 @ModelAttribute로 전환하는 방법
@RequestMapping(value = "/updateEntry", method = RequestMethod.GET)
public RedirectView updateAction(ModelAndView model,
@RequestParam(value = "name", defaultValue = "none") String selectedWaveName,
@RequestParam(value = "id", defaultValue = "-1") int id,
@RequestParam(value = "function", defaultValue = "none") String function,
@RequestParam(value = "evidence", defaultValue = "none") String evidence,
@RequestParam(value = "action", defaultValue = "none") String action,
@RequestParam(value = "topicId", defaultValue = "-1") int topicId,
@RequestParam(value = "topic", defaultValue = "none") String topic,
@RequestParam(value = "topicDesc", defaultValue = "none") String topicDesc,
@RequestParam(value = "waveId", defaultValue = "-1") int waveId,
@RequestParam(value = "waveStart", defaultValue = "none") String waveStart,
@RequestParam(value = "waveEnd", defaultValue = "none") String waveEnd)
throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
Date dateStart = formatter.parse(waveStart);;
Date dateEnd = formatter.parse(waveEnd);
waveDAO.updateFormResults(new FormResults(id,
new Topic(topicId, topic, topicDesc),
new Wave(waveId, selectedWaveName, dateStart, dateEnd),
evidence, action, function));
return new RedirectView("/hr/?name=" + selectedWaveName);
}
내가 @ModelAttribute를 사용하여 적은 수의 라인 전체 @RequestParam 라인을 대체 할 수있는 방법
? 모델 클래스 (FormResults, Topic, Wave)에 @ModelAttribute 주석을 추가해야합니까?
감사합니다.
향후 독자를위한 팁 : Spring을 통해 자동으로 호출되는 매개 변수 (예 : *'public void setAction (private String action) {}')와 같은 이름의 setter를 만들 수도 있습니다. 이렇게하면 요청 객체 (* 즉 *'FormResults')의 요청 매개 변수 이름에 제약을받지 않습니다. 예를 들어, 대신에'private String lastAction'을 사용할 수 있습니다 - setter에서 적절하게 설정하십시오. –