From 03d6302b0f7b0c0a4595d861c0d7e02acf87caa6 Mon Sep 17 00:00:00 2001 From: dasomel Date: Sat, 13 Jun 2026 17:04:56 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=8B=AC=EB=A0=A5,=20=ED=8F=AC?= =?UTF-8?q?=EB=A7=B7=20=EB=B3=80=ED=99=98,=20=EC=9D=B8=ED=84=B0=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4,=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EB=B3=B8=EB=AC=B8=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../elementary-technology/calendar.md | 354 +++++++++++++++++- .../elementary-technology/formatter-util.md | 68 +++- .../elementary-technology/interface.md | 43 ++- .../elementary-technology/message-process.md | 90 ++++- 4 files changed, 547 insertions(+), 8 deletions(-) diff --git a/common-component/elementary-technology/calendar.md b/common-component/elementary-technology/calendar.md index c99506c28..d4140ca96 100644 --- a/common-component/elementary-technology/calendar.md +++ b/common-component/elementary-technology/calendar.md @@ -4,8 +4,352 @@ linkTitle: "달력" description: "달력" url: /common-component/elementary-technology/calendar/ menu: - depth: - weight: 6 - parent: "elementary-technology" - identifier: "calendar" ---- \ No newline at end of file + depth: + weight: 6 + parent: "elementary-technology" + identifier: "calendar" +--- + + + +# 달력 + +## 개요 + +일반달력, 행정달력은 서비스 화면에서 날짜를 선택하는 기능으로 활용하며, 구간에 따른 조회화면을 제공한다. +휴일 관리는 휴일을 등록, 수정, 목록조회, 상세조회를 제공한다. + +## 설명 + +일반달력, 행정달력은 팝업화면과 일간/주간/월간/연간 조회화면으로 구성되어있다. +휴일의 관리는 목록조회, 상세조회, 등록, 수정, 삭제 처리 할 수 있도록 구성되어있다. + +### 관련소스 + +| 유형 | 대상소스명 | 비고 | +| ------------------ | -------------------------------------------------------------------------------- | ---------------------------------------------- | +| Controller | `egovframework.com.sym.cal.web.EgovCalRestdeManageController.java` | 달력, 휴일관리를 위한 컨트롤러 클래스 | +| Model | `egovframework.com.sym.cal.service.Restde.java` | 휴일 정보 Model 클래스 | +| VO | `egovframework.com.sym.cal.service.RestdeVO.java` | 달력, 휴일관리를 위한 VO 클래스 | +| Service | `egovframework.com.sym.cal.service.EgovCalRestdeManageService.java` | 달력, 휴일관리를 위한 서비스 인터페이스 | +| ServiceImpl | `egovframework.com.sym.cal.service.impl.EgovCalRestdeManageServiceImpl.java` | 달력, 휴일관리를 위한 위한 서비스구현 클래스 | +| DAO | `egovframework.com.sym.cal.service.impl.RestdeManageDAO.java` | 휴일 정보 관리를 위한 데이터처리 클래스 | +| JS | `/webapp/js/egovframework/cmm/sym/cal/EgovCalPopup.js` | 일반달력, 행정달력 팝업 호출을 위한 JavaScript | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministCalPopup.jsp` | 행정달력 팝업을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministCalendar.jsp` | 행정달력 팝업의 내용을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministDayCalendar.jsp` | 행정달력 일간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministMonthCalendar.jsp` | 행정달력 월간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministWeekCalendar.jsp` | 행정달력 주간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovAdministYearCalendar.jsp` | 행정달력 연간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalCalPopup.jsp` | 일반달력 팝업을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalCalendar.jsp` | 일반달력 팝업의 내용을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalDayCalendar.jsp` | 일반달력 일간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalMonthCalendar.jsp` | 일반달력 월간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalWeekCalendar.jsp` | 일반달력 주간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovNormalYearCalendar.jsp` | 일반달력 연간을위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovRestdeDetail.jsp` | 휴일 상세보기를 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovRestdeList.jsp` | 휴일 목록을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovRestdeModify.jsp` | 휴일 수정을 위한 JSP 페이지 | +| JSP | `/WEB-INF/jsp/egovframework/cmm/sym/cal/EgovRestdeRegist.jsp` | 휴일 등록을 위한 JSP 페이지 | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_altibase.xml` | 달력, 휴일관리를 위한 Altibase용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_cubrid.xml` | 달력, 휴일관리를 위한 Cubrid용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_maria.xml` | 달력, 휴일관리를 위한 MariaDB용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_mysql.xml` | 달력, 휴일관리를 위한 MySQL용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_oracle.xml` | 달력, 휴일관리를 위한 Oracle용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_postgres.xml` | 달력, 휴일관리를 위한 PostgreSQL용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_tibero.xml` | 달력, 휴일관리를 위한 Tibero용 Query XML | +| Query XML | `resources/egovframework/mapper/com/sym/cal/EgovRestdeManage_SQL_goldilocks.xml` | 달력, 휴일관리를 위한 Goldilocks용 Query XML | +| Validator Rule XML | `resources/egovframework/validator/validator-rules.xml` | Validator Rule을 정의한 XML | +| Validator XML | `resources/egovframework/validator/com/sym/cal/EgovRestdeManage.xml` | 달력, 휴일관리를 위한 Validator XML | +| Message properties | `resources/egovframework/message/com/sym/cal/message_en.properties` | 달력, 휴일관리를 위한 Message properties(영문) | +| Message properties | `resources/egovframework/message/com/sym/cal/message_ko.properties` | 달력, 휴일관리를 위한 Message properties(한글) | +| Idgen XML | `resources/egovframework/spring/com/idgn/context-idgn-RestDe.xml` | 달력, 휴일관리를 위한 Id생성 Idgen XML | + +### 관련테이블 + +| 테이블명 | 테이블명(영문) | 비고 | +| -------- | -------------- | ---------------- | +| 휴일 | `COMTNRESTDE` | 휴일 정보를 관리 | + +## 환경설정 + +휴일 관리 기능을 위하여 필요한 항목 및 그 환경 설정은 다음과 같다. + +### ID Generation 관련 DDL 및 DML + +ID Generation Service를 활용하기 위해서 Sequence 저장테이블인 `COMTECOPSEQ`에 **RESTDE_ID** 항목을 추가해야 한다. + +```sql +CREATE TABLE COMTECOPSEQ ( + table_name varchar(16) NOT NULL, + next_id DECIMAL(30) NOT NULL, + PRIMARY KEY (table_name) +); + +INSERT INTO COMTECOPSEQ VALUES ('RESTDE_ID','0'); +``` + +### ID Generation 환경설정(context-idgn-LeaderSchdu.xml) + +```xml + + + + + + +``` + +## 사용방법 + +### 일반달력 팝업 + +일반달력 팝업 호출을 위하여 다음사항을 적용한다. +`_editor_url` 변수는 `EgovCalPopup.js` 호출하는 자바스크립트보다 반드시 위줄에 위치하여야 한다.(변수를 선언하여 그 값을 받아오기 때문임) + +```html + + + +``` + +일반달력 팝업 호출을 위하여 `EgovCalPopup.js` 를 해당 페이지에 등록한다. + +```html +
+ + + +
+``` + +날짜를 사용할 폼에 받기위해 위 샘플 소스처럼 호출하여 사용한다. +`sDate`는 일자 연월일 8자리를 받고, `vDate`는 `-`를 포함하여 받는다. + +![일반달력](images/normalcalendar.png) + +#### 달력 팝업 DB 없이 사용하기 + +일반달력 팝업으로 휴일을 관리하지 않고 데이터베이스 없이 팝업 달력을 사용하기 위하여 아래와 같이 변경하여 사용할 수 있다. + +| URL | Controller | +| -------------------------------------- | ------------------------------- | +| `/sym/cmm/EgovselectNormalCalendar.do` | `EgovCalRestdeManageController` | + +다음 소스코드 부분을 + +```java +restde.setYear(Integer.toString(iYear)); +restde.setMonth(Integer.toString(iMonth)); + +cal.set(iYear,iMonth-1,1); + +restde.setStartWeekMonth(cal.get(Calendar.DAY_OF_WEEK)); +restde.setLastDayMonth(cal.getActualMaximum(Calendar.DATE)); + +List CalInfoList = restdeManageService.selectNormalRestdePopup(restde); +``` + +아래와 같이 변경하여 사용할 수 있다. + +```java +cal.set(iYear,iMonth-1,1); + +int firstWeek = cal.get(Calendar.DAY_OF_WEEK); +int lastDay = cal.getActualMaximum(Calendar.DATE); +int week = cal.get(Calendar.DAY_OF_WEEK); + +String year = Integer.toString(iYear); +String month = Integer.toString(iMonth); +String day = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)); + +restde.setStartWeekMonth(firstWeek); +restde.setLastDayMonth(lastDay); +restde.setYear(year); +restde.setMonth(month); + +List CalInfoList = new ArrayList(); +String tmpDay = ""; + +/** + * 계산... START + */ +for(int i=0; i<42;i++) { + ListOrderedMap map = new ListOrderedMap(); + int cc = i + 1; + int dd = cc-firstWeek+1; + + if (dd > 0 && dd <= lastDay) { + tmpDay = Integer.toString(dd); + } else { + tmpDay = ""; + } + + map.put("year", year); + map.put("month", month); + map.put("day", tmpDay); + map.put("cellNum", cc); + map.put("weeks", (cc - 1) / 7 + 1); + map.put("week", (week-1) % 7 + 1); + map.put("restAt", ((week-1) % 7 + 1==1) ? "Y" : "N"); + + if (dd > 0 && dd <= lastDay) { + week ++; + } + CalInfoList.add(map); + +} +/** + * 계산... END + */ +``` + +### 행정달력 팝업 + +행정달력 팝업 호출을 위하여 다음사항을 적용한다. +`_editor_url` 변수는 `EgovCalPopup.js` 호출하는 자바스크립트보다 반드시 위줄에 위치하여야 한다.(변수를 선언하여 그 값을 받아오기 때문임) + +```html + + + +``` + +행정달력 팝업 호출을 위하여 `EgovCalPopup.js` 를 해당 페이지에 등록한다. + +```html +
+ + + +
+``` + +날짜를 사용할 폼에 받기위해 위 샘플 소스처럼 호출하여 사용한다. +`sDate`는 일자 연월일 8자리를 받고, `vDate`는 `-`를 포함하여 받는다. + +![행정달력](images/administcalendar.jpg) + +### 행정달력 일간/주간/월간/연간 조회 + +행정달력 일간/주간/월간/연간 조회 할 수 있는 조회 화면으로 URL은 다음과 같다. + +| 기능 | URL | Controller | method | 화면(URL) | +| -------- | --------------------------------------- | ------------------------------- | ----------------------------- | ---------------------------------------- | +| 일간조회 | `/sym/cal/EgovAdministDayCalendar.do` | `EgovCalRestdeManageController` | `selectAdministDayCalendar` | `/cmm/sym/cal/EgovAdministDayCalendar` | +| 주간조회 | `/sym/cal/EgovAdministWeekCalendar.do` | `EgovCalRestdeManageController` | `selectAdministWeekCalendar` | `/cmm/sym/cal/EgovAdministWeekCalendar` | +| 월간조회 | `/sym/cal/EgovAdministMonthCalendar.do` | `EgovCalRestdeManageController` | `selectAdministMonthCalendar` | `/cmm/sym/cal/EgovAdministMonthCalendar` | +| 연간조회 | `/sym/cal/EgovAdministYearCalendar.do` | `EgovCalRestdeManageController` | `selectAdministYearCalendar` | `/cmm/sym/cal/EgovAdministYearCalendar` | + +### 휴일 목록 + +휴일 목록 조회를 할 수 있는 목록조회 화면으로 URL은 다음과 같다. + +`/sym/cal/EgovRestdeList.do` + +| 기능 | URL | Controller | method | 화면(URL) | +| -------- | ---------------------------- | ------------------------------- | ------------------ | ----------------------------- | +| 목록조회 | `/sym/cal/EgovRestdeList.do` | `EgovCalRestdeManageController` | `selectRestdeList` | `/cmm/sym/cal/EgovRestdeList` | + +휴일 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다. +검색조건은 휴일일자, 휴일명에 대해서 수행된다. +페이지 당 검색 범위를 변경하고자 하는 경우 `context-properties.xml` 파일의 `pageUnit`, `pageSize`를 변경한다.(단 해당 설정은 전체 공통서비스 기능에 영향을 미친다.) + +![휴일목록 화면](images/restdelist.png) + +### 휴일 등록 + +휴일 등록 할 수 있는 등록 화면으로 URL은 다음과 같다. + +`/sym/cal/EgovRestdeRegist.do` + +| 기능 | URL | Controller | method | 화면(URL) | +| ---- | ------------------------------ | ------------------------------- | -------------- | ------------------------------- | +| 등록 | `/sym/cal/EgovRestdeRegist.do` | `EgovCalRestdeManageController` | `insertRestde` | `/cmm/sym/cal/EgovRestdeRegist` | + +휴일에 대한 상세내용을 등록한다. +등록이 성공하면 휴일 목록 화면으로 이동한다. + +![휴일등록 화면](images/restderegist.png) + +### 휴일 수정 + +휴일 수정 할 수 있는 수정 화면으로 URL은 다음과 같다. + +`/sym/cal/EgovRestdeModify.do` + +| 기능 | URL | Controller | method | 화면(URL) | +| ---- | ------------------------------ | ------------------------------- | -------------- | ------------------------------- | +| 수정 | `/sym/cal/EgovRestdeModify.do` | `EgovCalRestdeManageController` | `updateRestde` | `/cmm/sym/cal/EgovRestdeModify` | + +수정이 성공하면 휴일 목록 화면으로 이동한다. + +![휴일수정 화면](images/restdemodify.png) + +### 휴일 상세 조회 + +휴일 상세 조회 할 수 있는 상세 조회 화면으로 URL은 다음과 같다. + +`/sym/cal/EgovRestdeDetail.do` + +| 기능 | URL | Controller | method | 화면(URL) | +| -------- | ------------------------------ | ------------------------------- | -------------------- | ------------------------------- | +| 상세조회 | `/sym/cal/EgovRestdeDetail.do` | `EgovCalRestdeManageController` | `selectRestdeDetail` | `/cmm/sym/cal/EgovRestdeDetail` | + +상세조회 화면에서는 삭제, 수정, 목록 버튼을 제공한다. + +![휴일상세조회 화면](images/restdedetail.png) diff --git a/common-component/elementary-technology/formatter-util.md b/common-component/elementary-technology/formatter-util.md index 426fd8650..3fda2551d 100644 --- a/common-component/elementary-technology/formatter-util.md +++ b/common-component/elementary-technology/formatter-util.md @@ -8,4 +8,70 @@ menu: weight: 9 parent: "elementary-technology" identifier: "formatter-util" ---- \ No newline at end of file +--- + +## 개요 + +포맷/계산/변환(Format/Calc/Convert) 요소기술 패키지는 공통컴포넌트 내에서 데이터의 형식을 조정하거나, 날짜, 숫자, 문자열 등에 대한 계산 및 변환 작업을 수행하는 유틸리티 기능을 제공한다. +게시판, 커뮤니티, 시스템 이력 관리 등 표준프레임워크의 다양한 공통컴포넌트에서 공통적으로 참조하여 사용하는 필수 요소기술이다. + +## 주요 개념 + +### 날짜/시간/요일 처리 + +- **계산**: 날짜 및 시간의 가감 연산(연, 월, 일, 시, 분 계산)과 요일 계산을 수행한다. +- **변환**: 날짜/시간을 문자열이나 정수형(int) 타입으로 변환한다. +- **포맷 변경**: 입력된 날짜/시간을 지정한 포맷(예: `yyyy년 MM월 dd일`)으로 변경하고, 영문 요일을 한글로 변환한다. +- **유효성 체크**: 주어진 날짜, 시간, 요일 데이터의 형식과 유효성을 검증한다. + +### 숫자 처리 + +- **변환**: 숫자 타입을 문자열 등 다른 데이터 타입으로 안전하게 변환한다. +- **치환 및 검증**: 특정 숫자 집합 간 치환 및 유효성 검증을 수행한다. + +### 문자열 처리 + +- **변환**: 대문자/소문자 상호 변환, HTML 특수문자 처리 등을 수행한다. +- **치환 및 검색**: 특정 문자열의 치환, 추출 및 검색 기능을 제공한다. +- **유효성 체크**: 이메일, 전화번호, 휴대폰번호 등 다양한 문자열 형식에 대한 유효성 체크를 수행한다. + +### 기타 유틸리티 + +- **환율 계산**: 외부 연계 등을 활용하여 지정된 환율 정보 기반으로 환율을 계산한다. +- **단위 변환**: 각종 측정 단위 및 수치 변환 기능을 제공한다. +- **랜덤 값 생성**: 무작위적인 날짜, 문자열, 난수를 생성한다. + +## 관련 클래스 및 패키지 구조 + +해당 모듈은 `egovframework.com.utl.fcc` (Format/Calc/Convert) 패키지에 구현되어 있으며, 주요 핵심 유틸리티 클래스는 다음과 같다. + +| 클래스명 | 설명 | 비고 | +| --- | --- | --- | +| `EgovDateUtil` | 날짜 및 시간 처리 관련 유틸리티 | | +| `EgovNumberUtil` | 숫자 데이터 처리 및 변환 유틸리티 | | +| `EgovStringUtil` | 문자열 처리 및 변환 유틸리티 | | +| `EgovFormatCheckUtil` | 이메일, 전화번호 등 포맷 유효성 체크 유틸리티 | | +| `EgovEhgtCalcUtil` | 환율 계산 처리 유틸리티 | | + +## 설명 + +### 유효성 체크 예시 (EgovFormatCheckUtil) + +전화번호, 휴대폰번호, 이메일 등을 입력받아 형식을 검증하는 기능을 제공하며, 구분 입력(배열/다중 파라미터)과 단일 문자열 입력을 모두 지원한다. + +#### 전화번호 유효성 체크 메소드 + +- `checkFormatTell(String tell1, String tell2, String tell3)`: 입력된 전화번호의 앞, 중간, 뒤 문자열을 각각 받아서 검증한다. 유효한 전화번호인지 체크하여 `boolean` 값을 반환한다. +- `checkFormatTell(String tellNumber)`: 하이픈(`-`)을 제외한 하나의 연결된 문자열을 받아서 유효한 전화번호인지 체크한다. + +```java +// 다중 파라미터를 이용한 검증 +boolean isValidePhone = EgovFormatCheckUtil.checkFormatTell("02", "1234", "5678"); + +// 단일 문자열을 이용한 검증 +boolean isValidePhone2 = EgovFormatCheckUtil.checkFormatTell("0212345678"); +``` + +## 참고자료 + +- [표준프레임워크 포털](https://www.egovframe.go.kr) diff --git a/common-component/elementary-technology/interface.md b/common-component/elementary-technology/interface.md index 39d4e915a..17f06449a 100644 --- a/common-component/elementary-technology/interface.md +++ b/common-component/elementary-technology/interface.md @@ -8,4 +8,45 @@ menu: weight: 7 parent: "elementary-technology" identifier: "interface" ---- \ No newline at end of file +--- + +# 인터페이스/화면 + +## 개요 + +인터페이스/화면 요소기술은 사용자와 시스템 간의 원활한 상호작용을 지원하기 위해 화면 단에서 빈번하게 사용되는 공통 기능을 제공한다. +이 컴포넌트들은 주로 쿠키/세션 관리, 웹에디터, 달력, 화면 인쇄 등 사용자 경험(UX)과 직결된 인터페이스 기능들을 포함한다. + +## 주요 개념 + +### 쿠키 및 세션 관리 + +웹 애플리케이션에서 클라이언트 측에 데이터를 저장하는 쿠키(Cookie)와 서버 측에 상태 정보를 유지하는 세션(Session)을 +생성, 수정, 삭제하는 기능을 제공한다. 이를 통해 사용자 맞춤형 서비스와 로그인 등의 상태 유지를 안정적으로 구현할 수 있다. + +### 화면 출력 및 에디터 + +HTML 기반의 서식 있는 텍스트를 작성할 수 있는 웹에디터 컴포넌트와 브라우저 상의 특정 영역을 문서로 출력하기 위한 +화면 인쇄 기능을 제공하여, 풍부한 사용자 인터페이스 환경을 구성한다. + +### 달력 및 메시지 처리 + +날짜를 직관적으로 선택할 수 있는 달력 컴포넌트와 사용자에게 정보(Info), 경고(Warning), 오류(Error) 등의 +상태 메시지를 표준화된 형태로 전달하기 위한 기능을 담당한다. + +## 관련 문서 + +- [달력](./calendar.md) +- [쿠키/세션](./cookie-session.md) +- [메시지처리](./message-process.md) +- [웹에디터](./webeditor.md) + +## 설명 + +인터페이스/화면 기술은 특정 업무 로직에 종속되지 않고, 다양한 웹 서비스의 프론트엔드 환경에서 재사용될 수 있도록 +독립적인 유틸리티 형태로 구현되어 있다. +표준프레임워크의 실행환경 기반 위에서 JSP, HTML 및 JavaScript와 연계하여 손쉽게 호출하고 적용할 수 있도록 설계되었다. + +## 참고자료 + +- [전자정부 표준프레임워크 공통컴포넌트 가이드](https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v4.1) diff --git a/common-component/elementary-technology/message-process.md b/common-component/elementary-technology/message-process.md index 83eca4207..f86e56926 100644 --- a/common-component/elementary-technology/message-process.md +++ b/common-component/elementary-technology/message-process.md @@ -8,4 +8,92 @@ menu: weight: 3 parent: "elementary-technology" identifier: "message-process" ---- \ No newline at end of file +--- + +## 개요 + +애플리케이션 내에서 사용하는 정보(Info), 경고(Warn), 에러(Error), 확인(Confirm) 메시지를 관리하고 취득하는 +유틸리티 공통기능을 제공한다. Property 파일을 통해 각 유형별 메시지 정보를 처리한다. + +## 설명 + +메시지는 성격에 따라 4가지(정보, 경고, 에러, 확인)로 구분되며, 별도의 Property 파일을 통해 메시지 내용을 관리한다. + +### 관련 소스 + +| 유형 | 대상 소스 | 설명 | 비고 | +| --- | --- | --- | --- | +| Service | `egovframework.com.utl.cas.service.EgovMessageUtil.java` | 메시지 처리 관련 유틸리티 | | +| Controller | `egovframework.com.utl.fcc.web.EgovComUtlTestController.java` | 테스트용 Controller | | +| JSP | `/WEB-INF/jsp/egovframework/cmm/utl/EgovMessage.jsp` | 테스트 페이지 | | + +### 메소드 + +`EgovMessageUtil` 클래스에서 다음과 같은 메소드를 제공한다. + +| 결과값 | 메소드 | 설명 | 내용 | +| --- | --- | --- | --- | +| `String` | `getInfoMsg(String key)` | 정보 메시지 취득 | 메시지 키에 해당하는 정보 메시지를 얻는 기능 | +| `String` | `getInfoMsg(String key, String[] params)` | 정보 파라미터 취득 | 메시지 키에 해당하는 정보 메시지에 파라미터 값을 대치하여 얻는 기능 | +| `String` | `getWarnMsg(String key)` | 경고 메시지 취득 | 메시지 키에 해당하는 경고 메시지를 얻는 기능 | +| `String` | `getWarnMsg(String key, String[] params)` | 경고 파라미터 취득 | 메시지 키에 해당하는 경고 메시지에 파라미터 값을 대치하여 얻는 기능 | +| `String` | `getErrMsg(String key)` | 에러 메시지 취득 | 메시지 키에 해당하는 에러 메시지를 얻는 기능 | +| `String` | `getErrMsg(String key, String[] params)` | 에러 파라미터 취득 | 메시지 키에 해당하는 에러 메시지에 파라미터 값을 대치하여 얻는 기능 | +| `String` | `getConfirmMsg(String key)` | 확인 메시지 취득 | 메시지 키에 해당하는 확인 메시지를 얻는 기능 | +| `String` | `getConfirmMsg(String key, String[] params)` | 확인 파라미터 취득 | 메시지 키에 해당하는 확인 메시지에 파라미터 값을 대치하여 얻는 기능 | + +#### Input + +- `key`: 속성 파일에 기록된 key 정보 +- `params`: 대치될 문자열 배열 정보 +- Validation 체크: 요소기술 Validation 체크 + +#### Output + +- `String`: 해당 key로 지정된 속성 정보. 해당 속성이 없으면 `null`을 리턴한다. + +## 환경설정 + +메시지 처리를 위해서는 **User home** 디렉터리 하위의 `egovProps/conf/` 경로에 +각 유형별 Property 파일이 정의되어 있어야 한다. 메시지 정의는 일반적인 Property 파일 정의 방식과 동일하다. + +- `infomessage.properties` (정보 메시지) +- `warnmessage.properties` (경고 메시지) +- `errormessage.properties` (에러 메시지) +- `confirmmessage.properties` (확인 메시지) + +> **참고**: User home 디렉터리는 `System.getProperty("user.home")`를 통해 얻는 정보이다. +> Windows 계열 운영체제는 보통 `C:\Users\사용자계정`이고, Unix/Linux 계열은 `/home/사용자계정`이 된다. + +## 사용방법 + +각 `.properties` 파일에 다음과 같은 메시지가 정의되어 있다고 가정한다. + +```properties +# infomessage.properties +test.message = info message +param.message = info message : {0} = {1} + +# warnmessage.properties +test.message = warn message +param.message = warn message : {0} = {1} +``` + +Java 소스코드에서 `EgovMessageUtil` 클래스를 이용하여 메시지를 취득한다. + +```java +import egovframework.com.utl.cas.service.EgovMessageUtil; + +// ... + +String message = null; + +// 1. 일반 메시지 취득 +message = EgovMessageUtil.getInfoMsg("test.message"); +// message = EgovMessageUtil.getWarnMsg("test.message"); +// message = EgovMessageUtil.getErrMsg("test.message"); +// message = EgovMessageUtil.getConfirmMsg("test.message"); + +// 2. 파라미터 처리 메시지 취득 : String 배열의 값이 각각 {0}, {1}로 대치됨 +message = EgovMessageUtil.getInfoMsg("param.message", new String[] {"정보", "해당되는 기대값이 없습니다."}); +```