[SPRING] 주석이 달린 @Controller를 사용하는 AbstractWizardFormController
SPRING주석이 달린 @Controller를 사용하는 AbstractWizardFormController
Spring Framework에서, AbstractWizardFormController는 더 이상 사용되지 않습니다. Spring MVC 프레임 워크에서 여러 페이지 양식을 구현하는 방법. (나는 웹 플로우를 사용하지 않는다)
모든 예제 또는 포인터는 Spring 내 제한된 지식을 고려하는 데 도움이됩니다.
해결법
-
==============================
1.@Controller는 폼 / 마법사를보다 유연하게 정의 할 수있는 방법입니다. 요청 된 경로 / 요청 매개 변수 / 요청 메소드를 기반으로 요청에 메소드를 매핑해야합니다. 따라서보기 목록을 정의하고 필요한 "단계"매개 변수를 기반으로 요청을 처리하는 대신 원하는대로 마법사의 단계를 정의 할 수 있습니다. 또한 명령 개체가보다 투명하게 처리됩니다. 고전적인 AWFC 기능을 에뮬레이트하는 방법은 다음과 같습니다 (이 예는 단지 하나의 예일 뿐이며 훨씬 더 많이 할 수 있습니다).
@Controller는 폼 / 마법사를보다 유연하게 정의 할 수있는 방법입니다. 요청 된 경로 / 요청 매개 변수 / 요청 메소드를 기반으로 요청에 메소드를 매핑해야합니다. 따라서보기 목록을 정의하고 필요한 "단계"매개 변수를 기반으로 요청을 처리하는 대신 원하는대로 마법사의 단계를 정의 할 수 있습니다. 또한 명령 개체가보다 투명하게 처리됩니다. 고전적인 AWFC 기능을 에뮬레이트하는 방법은 다음과 같습니다 (이 예는 단지 하나의 예일 뿐이며 훨씬 더 많이 할 수 있습니다).
@Controller @RequestMapping("/wizard.form") @SessionAttributes("command") public class WizardController { /** * The default handler (page=0) */ @RequestMapping public String getInitialPage(final ModelMap modelMap) { // put your initial command modelMap.addAttribute("command", new YourCommandClass()); // populate the model Map as needed return "initialView"; } /** * First step handler (if you want to map each step individually to a method). You should probably either use this * approach or the one below (mapping all pages to the same method and getting the page number as parameter). */ @RequestMapping(params = "_step=1") public String processFirstStep(final @ModelAttribute("command") YourCommandClass command, final Errors errors) { // do something with command, errors, request, response, // model map or whatever you include among the method // parameters. See the documentation for @RequestMapping // to get the full picture. return "firstStepView"; } /** * Maybe you want to be provided with the _page parameter (in order to map the same method for all), as you have in * AbstractWizardFormController. */ @RequestMapping(method = RequestMethod.POST) public String processPage(@RequestParam("_page") final int currentPage, final @ModelAttribute("command") YourCommandClass command, final HttpServletResponse response) { // do something based on page number return pageViews[currentPage]; } /** * The successful finish step ('_finish' request param must be present) */ @RequestMapping(params = "_finish") public String processFinish(final @ModelAttribute("command") YourCommandClass command, final Errors errors, final ModelMap modelMap, final SessionStatus status) { // some stuff status.setComplete(); return "successView"; } @RequestMapping(params = "_cancel") public String processCancel(final HttpServletRequest request, final HttpServletResponse response, final SessionStatus status) { status.setComplete(); return "canceledView"; } }
내가 언급 한 유연성에 대한 아이디어를 얻을 수 있도록 메소드 서명을 변경하려고했습니다. 물론 훨씬 더 많은 것이있다 : @RequestMapping에서 요청 메소드 (GET 또는 POST)를 사용할 수 있고, @InitBinder 등으로 주석이 달린 메소드를 정의 할 수있다.
수정 : 내가 수정 한 매핑되지 않은 방법을했다 (그건 그렇고, 당신은 모호한 매핑이 필요하지 않도록해야합니다 - 하나 이상의 방법에 매핑 될 수있는 요청 - 또는 매핑되지 않은 요청 - 수없는 요청 모든 메소드에 맵핑 됨). 또한 @SessionAttributes, @SessionStatus 및 @ModelAttribute를 살펴보십시오.이 태그는 기존 AWFC의 동작을 완전히 시뮬레이트하는데도 필요합니다.
from https://stackoverflow.com/questions/4623667/abstractwizardformcontroller-using-annotated-controllers by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate / Spring : 지연 초기화에 실패 - 세션이나 세션이 닫히지 않았습니다. (0) | 2019.03.01 |
---|---|
[SPRING] 많은 관계를 설정하거나 목록을 최대 절전 모드로 전환 하시겠습니까? (0) | 2019.03.01 |
[SPRING] java.lang.AssertionError : junit Spring MVC Controller 동안 컨텐츠 유형이 설정되지 않았습니까? (0) | 2019.03.01 |
[SPRING] 싱글 톤 Bean은 동시 요청을 어떻게 처리합니까? (0) | 2019.03.01 |
[SPRING] 봄 MVC : 인덱스 페이지에 대한 기본 컨트롤러를 만드는 방법? (0) | 2019.03.01 |