[SPRING] 주석이 달린 컨트롤러의 동적 명령 클래스
SPRING주석이 달린 컨트롤러의 동적 명령 클래스
Spring MVC 3에서, AbstractCommandController는 더 이상 사용되지 않으므로 더 이상 setCommandClass ()에서 명령 클래스를 지정할 수 없습니다. 대신 명령 클래스를 요청 핸들러의 매개 변수 목록에 하드 코딩하십시오. 예를 들어,
@RequestMapping(method = RequestMethod.POST)
public void show(HttpServletRequest request, @ModelAttribute("employee") Employee employee)
내 문제는 사용자가 일반 빈을 편집 할 수 있도록 일반 페이지를 개발 중이므로 런타임까지 명령 클래스를 알 수 없기 때문입니다. 변수 beanClass가 AbstractCommandController를 사용하여 명령 클래스를 보유하고 있다면 다음을 수행하면됩니다.
setCommandClass(beanClass)
커맨드 객체를 메서드 매개 변수로 선언 할 수 없기 때문에 요청 처리기 본문의 Spring에 요청 매개 변수를 바인딩하는 방법이 있습니까?
해결법
-
==============================
1.Spring이 명령 클래스를 알아야하는 유일한 곳은 명령 객체의 인스턴스 생성입니다. 그러나이를 @ ModelAttribute-annotated 메서드로 재정의 할 수 있습니다.
Spring이 명령 클래스를 알아야하는 유일한 곳은 명령 객체의 인스턴스 생성입니다. 그러나이를 @ ModelAttribute-annotated 메서드로 재정의 할 수 있습니다.
@RequestMapping(method = RequestMethod.POST) public void show(HttpServletRequest request, @ModelAttribute("objectToShow") Object objectToShow) { ... } @ModelAttribute("objectToShow") public Object createCommandObject() { return getCommandClass().newInstance(); }
그런데 Spring은 실제 generics에서도 잘 작동합니다.
public abstract class GenericController<T> { @RequestMapping("/edit") public ModelAndView edit(@ModelAttribute("t") T t) { ... } } @Controller @RequestMapping("/foo") public class FooController extends GenericController<Foo> { ... }
from https://stackoverflow.com/questions/3897185/dynamic-command-class-in-annotated-controller by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC BindingResult 나 bean name을위한 평범한 대상 객체가 아니다. (0) | 2019.04.09 |
---|---|
[SPRING] 스프링 MVC : @SessionAttributes는 컨트롤러간에 공유됩니까? (0) | 2019.04.09 |
[SPRING] 스프링 데이터 저장소와 mongodb로 스프링 애플리케이션 설정하기 (0) | 2019.04.09 |
[SPRING] Thymeleaf를 사용하여 Spring의 웹 기반 Scope에서 HTML 파일을 처리하고 처리 된 템플릿을 String으로 저장 (0) | 2019.04.09 |
[SPRING] 여러 KafkaListenerContainerFactory 추가 문제 (0) | 2019.04.09 |