From 5ea8d4fdb6d81affda77e0b05765a11662940e8f Mon Sep 17 00:00:00 2001 From: ythong Date: Wed, 8 Jul 2026 18:04:28 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20=EC=A7=80?= =?UTF-8?q?=EB=B0=A9=EB=AC=B8=ED=99=94=EC=9B=90=20=EB=93=B1=EB=A1=9D/?= =?UTF-8?q?=EC=88=98=EC=A0=95=EC=97=90=20=EA=B5=AC.=EA=B5=B0(AREA=5FSUB=5F?= =?UTF-8?q?CODE)=20=EC=84=A0=ED=83=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - lclttRegist.jsp: 시.도 select 옆에 구.군 select 추가, /lcltt/selectAreaSubCodeListAjax.do 연동, 필수값 검증, 주소검색 콜백에서 sggNm 일치 구.군 자동선택 - LclttServiceImpl.java: insert/updateLcltt에서 폼의 areaSubCode 명시값을 우선 사용하고 비어있을 때만 주소 텍스트 추정을 setAreaSubCodeByAdres() 폴백으로 분리, null/배열 방어코드 추가 (기존 주소파싱 추정의 ArrayIndexOutOfBounds/NPE로 저장 실패하던 "시스템 에러" 해소) - LclttDAO.xml: selectLclttDetail에 A.AREA_SUB_CODE 추가(수정화면 진입 시 기존값 표시) 운영(webapps/kccf)에 개별 파일(class/jsp/xml)로 반영 + Tomcat 재시작 완료. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../lcltt/service/impl/LclttServiceImpl.java | 54 +++++++++----- .../mapper/kccf/lcltt/LclttDAO.xml | 1 + .../WEB-INF/jsp/mng/lcltt/lclttRegist.jsp | 71 ++++++++++++++++--- 3 files changed, 100 insertions(+), 26 deletions(-) diff --git a/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java b/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java index 6f55817..4b46c3b 100644 --- a/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java +++ b/src/main/java/kccf/lcltt/service/impl/LclttServiceImpl.java @@ -30,18 +30,10 @@ public class LclttServiceImpl implements LclttService{ @Override public int insertLcltt(LclttVO vo) { - String[] adresArray = vo.getAdres1().split("\\s"); - - CmmDetailCodeVO cmmDetailCodeVO = new CmmDetailCodeVO(); - cmmDetailCodeVO.setAditAtrbInfoValue1(vo.getAreaCode()); - List codeList = lclttDAO.selectAreaSubCodeListAjax(cmmDetailCodeVO); - - for(int i = 0; i < codeList.size(); i++) { - if(codeList.get(i).getDetailCodeNm().equals(adresArray[1])) { - vo.setAreaSubCode(codeList.get(i).getDetailCode()); - } + if(vo.getAreaSubCode() == null || vo.getAreaSubCode().trim().isEmpty()) { + setAreaSubCodeByAdres(vo); } - + return lclttDAO.insertLcltt(vo); } @@ -52,20 +44,46 @@ public class LclttServiceImpl implements LclttService{ @Override public int updateLcltt(LclttVO vo) { - - String[] adresArray = vo.getAdres1().split("\\s"); - + if(vo.getAreaSubCode() == null || vo.getAreaSubCode().trim().isEmpty()) { + setAreaSubCodeByAdres(vo); + } + + return lclttDAO.updateLcltt(vo); + } + + /** + * 등록/수정 화면에서 구.군(areaSubCode)이 명시적으로 전달되지 않은 경우에 한해 + * 주소1(adres1)의 두 번째 단어(구.군명 추정)를 AREA_SUB_CODE 목록과 매칭하여 + * vo에 areaSubCode를 세팅하는 하위 호환용 폴백 로직이다. + * 예외 없이 매칭 실패 시 조용히 건너뛴다. + */ + private void setAreaSubCodeByAdres(LclttVO vo) { + if(vo.getAdres1() == null || vo.getAdres1().trim().isEmpty()) { + return; + } + + String[] adresArray = vo.getAdres1().trim().split("\\s+"); + + if(adresArray.length < 2) { + return; + } + + String adresGuGun = adresArray[1]; + CmmDetailCodeVO cmmDetailCodeVO = new CmmDetailCodeVO(); cmmDetailCodeVO.setAditAtrbInfoValue1(vo.getAreaCode()); List codeList = lclttDAO.selectAreaSubCodeListAjax(cmmDetailCodeVO); - + + if(codeList == null) { + return; + } + for(int i = 0; i < codeList.size(); i++) { - if(codeList.get(i).getDetailCodeNm().equals(adresArray[1])) { + if(adresGuGun.equals(codeList.get(i).getDetailCodeNm())) { vo.setAreaSubCode(codeList.get(i).getDetailCode()); + break; } } - - return lclttDAO.updateLcltt(vo); } @Override diff --git a/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml b/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml index 486281f..a3497cb 100644 --- a/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml +++ b/src/main/resources/egovframework/mapper/kccf/lcltt/LclttDAO.xml @@ -101,6 +101,7 @@ A.LCLTT_ID , A.LCLTT_NM , A.AREA_CODE , + A.AREA_SUB_CODE , A.ADRES1 , A.ADRES2 , A.ADRES1 || ' ' || A.ADRES2 AS ADRES , diff --git a/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp b/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp index ab3ff35..21d099b 100644 --- a/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp +++ b/src/main/webapp/WEB-INF/jsp/mng/lcltt/lclttRegist.jsp @@ -47,6 +47,15 @@ + + + + +
+ + +
+ @@ -199,21 +208,53 @@