1. 원래 Axboot의 처리방식
: 신규 행추가 후 기존의 키값과 동일한 키값을 입력 후 저장시 원래있던 데이터를 행추가시 입력한 데이터로
업데이트 해버린다.
==> 실제 업무화면에서는 사고가 발생할 여지가 있는 부분임.
실수로 기존의 키값과 동일한 값을 추가하여 나머지 데이터는 다른값을 입력하고 저장했을 경우
의도치 않게 기존에 있던 데이터가 업데이트되어 사고가 발생할 수 있다.
보통은 신규로 행추가 했을 경우 기존값과 중복된 키값을 입력했을 경우 에러를 벹어내도록 구현된다.
1) 기존 처리방식의 예시화면
- 기존데이터 상태
- 기존에 있는 데이터와 중복되는 제품코드가 11 인 데이터를 추가함(제품명,원산지,매입가격,판매가격은 다르게 입력)
(데이터가 많으면 인지하지 못할 수 있음)
- 저장시 기존의 데이터가 있다는 경고 없이 그냥 저장됨.
2. 중복체크로직 추가
1) javascript에서 로직 추가
- 조회 후 조회값인지 화면에서 행추가한 값인지 상태값 체크할 수 있는 "__searched__" key를 조회결과 처리부분의
json 에 추가해준다.
==>이유 : 신규로 행추가 후 중복값 입력 후 저장했을 경우 에러메시지가 발생해서 중복값을 삭제 후
저장했을 경우 화면에서는 없어졌지만 계속 값이 deletedList라는 json key에 "__create__" key로 저장되어있어
계속 중복된다는 메시지가 리턴됨. 그래서 화면에서만 추가/삭제된 것은 deletedList에서 없애주기 위해서는
기존에 조회된 값인지의 여부를 판단할 필요가 있어 "__searched__" flag가 필요함.
- 저장(PAGE_SAVE) 시 에러가 발생할 경우 메시지처리하는 부분을 추가함.
- Grid의 delRow 부분에 행삭제시 기존에 조회된 값이 아닌 경우 불필요하게 데이터가 서버로 날라가는것을
방지하기 위해 deletedList에서 "__searched__" key가 없는(undefined) 것은 삭제하는 로직 추가
2) Controller 에서 로직 추가
- Exception을 받아 화면으로 넘기는 처리한다.
==> axboot에 있는 class를 활용한다.
: ApiException 으로 받아 com.chequer.axboot.core.controllers.BaseController.handleApiException을 화면으로 넘긴다.
3) ProductService 에서 로직 추가
- 신규추가된 데이터에 대해 기존에 있는데이터인지 체크해서 중복 시 ApiException으로 메시지를 리턴한다.
다음 글에 중복등록체크로직 추가 -2 에서 실제 구현되는 방식을 보시겠습니다.
어때요? 도움이 많이 되셨나요? ~~~~~~~
'오픈소스 > AXBoot프로그래밍' 카테고리의 다른 글
Axboot 멀티 테이블 수정/저장 예제 (1/2) (0) | 2019.06.05 |
---|---|
Axboot 신규화면 만들기 7 - 중복등록체크로직 추가 -2 소스구현 (0) | 2018.11.30 |
Axboot 신규화면 만들기 6 - 행추가시 초기값(default) 셋팅하기 (0) | 2018.11.28 |
Axboot 신규화면 만들기 5 - 저장,수정시 자동으로 최종 등록/수정일 처리 (0) | 2018.09.10 |