티스토리 뷰
0. 개요
- Nexacro client에서 보내는 요청을 처리하는 컨트롤러 메서드는 요청에 사용하는 데이터셋의 유형에 맞게
어노테이션을 선언한 파라미터를 정의하여 client에서 전송한 데이터를 사용할 수 있다
- client에서 전송하는 요청의 유형에 따라 처리하는 방법은 아래와 같이 구별할 수 있다.
1) 파라미터가 없는 경우
2) 하나의 값(Row)만 존재하는 데이터셋을 파라미터로 받는 경우
3) 여러 값(Row)를 가지는 데이터셋을 파라미터로 받는경우
4) 추가/수정/삭제 요청을 하나의 요청에서 받는 경우
1. 요청 처리
1) 파라미터가 없는 경우
예) ResearchPlanningController.java
... @RequestMapping("/ss1pl0002r.do") public NexacroResult retrieveAllResearchPlanning() { // List<ResearchPlanningDTO> researchPlannings = researchPlanningProcService.retrieveAllResearchPlanning();
NexacroResult result = new NexacroResult();
result.addDataSet("DS_researchPlanning", researchPlannings);
return result; } ...
|
※ Nexacro client에서 보낸 파라미터가 없는 요청을 처리하는 controller의 메서드는 파라미터없이 정의 가능
2) 하나의 값(Row)만 존재하는 데이터셋을 파라미터로 받는 경우
예) ResearchPlanningController.java
import com.nexacro.uiadapter17.spring.core.annotation.ParamDataSet; ... @RequestMapping("/ss1pl0001i.do") public NexacroResult createResearchPlanning( @ParamDataSet(name = "DS_researchPlanning") ResearchPlanningDTO requestDTO) { // researchPlanningProcService.createResearchPlanning(requestDTO);
return new NexacroResult(); } ...
|
※ 하나의 DataSet을 파라미터로 받을 경우 client가 보낸 DataSet을 변환할 DTO를 파라미터로 기술하고,
파라미터 앞에 @ParamDataSet 어노테이션을 선언하고 name 속성에 DataSet의 이름을 기술
3) 여러 값(Row)를 가지는 데이터셋을 파라미터로 받는경우
예) TestController.java
import com.nexacro.uiadapter17.spring.core.annotation.ParamDataSet; ... @RequestMapping("/ss1pl1111u.do") public NexacroResult test4( @ParamDataSet(name = "DS_test1") List<TypeTestDTO> testDTOs) { // for (TypeTestDTO dto : testDTOs) { log.debug("############################"); log.debug("dto : {}", dto); }
return new NexacroResult(); } ...
|
※ 여러 값(Row)를 가지는 DataSet을 파라미터로 받을 경우, 파라미터에 DTO 리스트를 기술하고
그 앞에 @ParamDataSet을 적고, name 속성에 DataSet의 이름을 지정
4) 추가/수정/삭제 요청을 하나의 요청에서 받는 경우
예) ResearchPlanningController.java
import kr.amc.amil.nexacro.annotation.CudListsParam; ... @RequestMapping("/ss1pl0103t.do") public NexacroResult processResearchPlannings( @CudListsParam(name = "DS_researchProject") CudLists<ResearchProjectDTO> cudLists) { // researchProjectProcService.processResearchProjectList(cudLists);
return new NexacroResult(); } ...
|
※ Nexacro의 그리드에서 추가, 수정, 삭제를 한꺼번에 처리를 요청하는 경우, 파라미터에 CUDLists를 사용하며
그 앞에 @CudListsParam을 적고, name 속성에 DataSet의 이름을 지정함
화면의 그리드에서 추가, 수정, 삭제한 Row의 정보로 CudLists로 변환이 되고, 추가, 수정, 삭제한 Row에
해당하는 DTO를 가지는 3개의 리스트를 사용할 수 있음 (listForCreation, listForDelete, listForUpdate)
CudList 객체를 파라미터로 서비스를 요청하여 처리하면 됨
* null 파라미터 허용 옵션
- DTO(DataSet)값이 null로도 전송할 수 있다면, Nexacro 파라미터 관련 어노테이션의 required 속성을 false로 정의
예) @ParamDataSet(name=“DS_researchPlanning”, required=false) ResearchPlanningDTO requestDTO
@ParamDataSet(name=“DS_test1”, required=false) List testDTOs
@CudListsParam(name=“DS_researchProject”, required=false) CudLists cudLists
2. 응답 처리
1) 결과 없이 응답
예) ResearchPlanningController.java
@RequestMapping("/ss1pl0001i.do") public NexacroResult createResearchPlanning( @ParamDataSet(name = "DS_researchPlanning") ResearchPlanningDTO requestDTO) { // researchPlanningProcService.createResearchPlanning(requestDTO);
return new NexacroResult(); }
|
※ 결과없이 응답하는 경우 인자가 없는 생성자를 호출하여 생성한 NexacroResult 객체를 리턴
2) 하나의 DTO로 응답
예) ResearchPlanningController.java
@RequestMapping("/ss1pl0003r.do") public NexacroResult retrieveResearchPlanning( @ParamDataSet(name = "DS_researchPlanning", required = false) ResearchPlanningDTO requestDTO) { // log.debug("requestDTO {}", requestDTO); ResearchPlanningDTO researchPlanningDTO = researchPlanningProcService.retrieveResearchPlanning(requestDTO.getName());
NexacroResult result = new NexacroResult();
result.addDataSet("DS_researchPlanning", researchPlanningDTO);
return result; }
|
※ NexacroResult 객체를 생성한 후 addDataSet 메소드를 통해 DataSet 이름과, DTO를 세팅한 후 리턴
3) 다건의 DTO로 응답
예) ResearchPlanningController.java
@RequestMapping("/retrieveAllResearchPlannings.do") public NexacroResult retrieveAllResearchPlanning() { // List<ResearchPlanningDTO> researchPlannings = researchPlanningProcService.retrieveAllResearchPlanning();
NexacroResult result = new NexacroResult();
result.addDataSet("DS_researchPlanning", researchPlannings);
return result; }
|
※ NexacroResult 객체를 생성한 후 addDataSet 메소드를 통해 DataSet 이름과 DTO 리스트를 세팅한 후 리턴
4) paging으로 응답
예) ResearchPlanningController.java
@RequestMapping("/ss1pl0001r.do") public NexacroResult retrieveResearchPlanningPagedList( @ParamDataSet(name = "DS_researchPlanningRequest") ResearchPlanningDTO requestDTO) { // log.debug("requestDTO {}", requestDTO); Paging<ResearchPlanningDTO> researchPlanningPaging = researchPlanningProcService.retrieveResearchPlanningPagedList(requestDTO);
NexacroResult result = new NexacroResult();
result.addDataSet("DS_researchPlanning", researchPlanningPaging.getItemList()); result.addDataSet("DS_researchPlanningPaging", PagingInfo.newInstance(researchPlanningPaging));
return result; }
|
※ NexacroResult 객체를 생성한 후 addDataSet 메소드를 두 번 호출하여 아래 값들을 설정한 후 리턴
DataSet 이름과 아이템 목록(Paging객체의 getItemList() 메소드 호출) 세팅
DataSet 이름과 페이징 정보(PagingInfo 클래스의 newInstance() 메소드로 생성) 세팅
3. nexacro가 아닌 요청에 대한 대응 controller
예)
@Slf4j @Controller @RequestMapping("/nn") public class ResearchPlanningJspController { // @Autowired private ResearchPlanningProcService researchPlanningProcService;
@Autowired private ResearchPlanningShareService researchPlanningShareService;
@Autowired private Configuration configuration;
@RequestMapping("/ss1pl1001i.do") @ResponseBody public AbstractDTO createResearchPlanning(@RequestBody ResearchPlanningDTO dto) { // int createCount = researchPlanningProcService.createResearchPlanning(dto);
log.debug("createdCount {}", createCount);
return new AbstractDTO() {}; }
@RequestMapping("/ss1pl1002r.do") @ResponseBody public ResearchPlanningDTO retrieveResearchPlanning(@RequestBody String name) { // ResearchPlanningDTO researchPlanningDTO = researchPlanningProcService.retrieveResearchPlanning(name);
log.debug("retrieve {}", name);
return researchPlanningDTO; } @RequestMapping("/ss1pl1001u.do") @ResponseBody public AbstractDTO updateResearchPlanning(@RequestBody ResearchPlanningDTO researchPlanningDTO) { // int updateCount = researchPlanningProcService.updateResearchPlanning(researchPlanningDTO); log.debug("update {}", updateCount);
return new AbstractDTO() {}; }
@RequestMapping("/ss1pl1001d.do") @ResponseBody public AbstractDTO deleteResearchPlanning(@RequestBody ResearchPlanningDTO researchPlanningDTO) { // log.debug("delete {}", researchPlanningDTO);
return new AbstractDTO() {};
|
1) @RequestMapping
- 요청을 받을 api를 @RequestMapping(“값”)으로 지정.
- 위와 같은 경우에는 클래스에 @RequestMapping(“/nn”)가 있고,
각 메서드에 @RequestMapping(“ss1pl1002r.do”) 라고 작성하게 되면,
http://"URL"/"ContextPath"/nn/ss1pl1002r.do 형태의 api로 요청을 받음
2) @ResponseBody: 요청을 받은 서비스( Method ) 의 리턴값을 응답
3) @RequestBody
- Body에 값을 요청
- JSON형식의 데이터를 Java Object(String, XxDTO, PrimitiveType, WrapperClass…) 형태로 변환하여 파라미터로 받음
'분리수거 대기중' 카테고리의 다른 글
Java Script: 정규 표현식을 이용한 공백 제거 (0) | 2019.05.15 |
---|---|
Agile process (0) | 2019.05.09 |
SLF4J logging (0) | 2019.05.08 |
JSP 주소 호출 방법 (0) | 2019.05.08 |
POJO(Plain Old Java Object) (0) | 2019.04.03 |