- 커맨드 객체란? 목차
지난번에 @RequestParam으로 값을 많이 바인딩 시키면 코드가 지저분해지는 경우가 있을텐데
이번에는 커맨드객체를 활용하여 코드 가독성을 조금 더 높여보도록한다 !
웹 프로젝트 개발 시 "인쇄하기"라는 기능이 있어서 다른 view.jsp 에서 값을 컨트롤러를 타야 하는 경우가 있었는데
이럴때 model에 값을 엄청 많이 binding 시켜줬던 기억이있다.
이제는 Command 객체를 활용하여 이러한 경우를 대비해 볼 것이다. !
회사에서 작성했던 코드
@GetMapping("/print")
public void testMethod(@Request Param . . . (수만은 RequestParam이 적히고) ){
model.addattrubute("사용할 data들 ", ... );
model.addattrubute("사용할 data들 ", ... );
model.addattrubute("사용할 data들 ", ... );
model.addattrubute("사용할 data들 ", ... );
}
| 커맨드 객체란?
Command 객체를 활용한 코드
별도의 Class를 만들어서 값을 binding 받을 class 즉 객체를 만들도록 한다.
주의할 점은 스프링에서는 이러한 부분을 특정 데이터모델을 만들어 키 값과 변수명을 동일하게 한다면
AutoParsing되어 데이터를 손쉽게 사용할 수 있다.
이를 "커맨드 객체"라고 한다.
커맨드 객체를 활용한 data mapping방법
//사용할 변수와 키값이 동일한 객체 선언
@Getter
@Setter
public class {
private ~~~
private ~~~
private ~~~
private ~~~
private ~~~
}
@RequestMapping("/print/Schedule07")
public String schedule(SchedultPrint scprint,Model model){
//이렇게 설정하면 많은 model을 명시할 필요가 없음.
model.addattribute("printSc",scprint);
return "schedule/printSchedule";
}
위처럼 객체 class를 만들고 해당 객체에 타입과 변수명을 일치시켜
Controller에서 그 객체를 사용하고 Model에 담아 뿌리는것이다.
이러면 훨씬 더 코드의 가독성도 올라가게 되며 간단명료해진다.
화면에서는 el태그로 값을 뿌리기만 하면 된다
${printSc. ~~~ }
'Spring' 카테고리의 다른 글
메시지 컨버터란? (0) | 2020.07.25 |
---|---|
@RequestMapping의 produces,Content-Type,Consumes란? (1) | 2020.07.25 |
@RequestParam과 @PathVariable? (0) | 2020.07.25 |
[Spring]ResponseEntity (0) | 2020.03.11 |
[Spring]@Autowired와 @AllArgsConstructor의 차이 (0) | 2020.03.11 |