nbs0105 / BOOT_CMS star
beom 5 days ago
회원관리 검증 어노테이션 적용
@e69c47a708a15313fb66930d965d11d12e8dba54
CHANGELOG_BOOT_JPA.md
--- CHANGELOG_BOOT_JPA.md
+++ CHANGELOG_BOOT_JPA.md
@@ -354,3 +354,11 @@
   - 필수값/길이 제약 어노테이션 추가
 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/ccm/cde/service/CmmnDetailCodeVO.java`
   - 필수값/길이 제약 어노테이션 추가
+
+## 추가 변경(16차)
+
+### 회원관리 검증 어노테이션 적용
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java`
+  - 회원관리 필드에 Bean Validation 어노테이션 추가
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java`
+  - 등록/수정 시 `@Valid` 적용 및 오류 시 화면 복귀 처리
base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java
--- base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java
+++ base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java
@@ -21,6 +21,8 @@
 import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+
+import jakarta.validation.Valid;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springmodules.validation.commons.DefaultBeanValidator;
@@ -130,7 +132,13 @@
 
     //사용자 정보를 DB에 입력한다.
 	@RequestMapping(value = "/manage/usr/userSelectIndt.do")
-    public String EgovUserSelectIndt(final MultipartHttpServletRequest multiRequest,@ModelAttribute("searchVO") UserDefaultVO searchVO,UserManageVO userManageVO,BindingResult bindingResult, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
+    public String EgovUserSelectIndt(final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") UserDefaultVO searchVO, @Valid UserManageVO userManageVO, BindingResult bindingResult, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
+		if (bindingResult.hasErrors()) {
+			CmmnDetailCodeVO voComCode = new CmmnDetailCodeVO();
+			voComCode.setCodeId("COM800");
+			model.addAttribute("userSeCodeList", cmmUseService.selectCmmCodeDetail(voComCode));
+			return "manage/usr/MemberIndt";
+		}
 		userManageVO.setFrstRegistIp(request.getRemoteAddr());
 		userManageService.insertUser(userManageVO);
 
@@ -192,7 +200,15 @@
 	
 	//사용자정보 수정 처리 한다.
 	@RequestMapping(value = "/manage/usr/userSelectUpdt.do")
-    public String EgovUserSelectUpdt(final MultipartHttpServletRequest multiRequest,@ModelAttribute("searchVO") UserDefaultVO searchVO, @RequestParam(value="targetId", defaultValue="", required=false) String targetId,UserManageVO userManageVO, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
+    public String EgovUserSelectUpdt(final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") UserDefaultVO searchVO, @RequestParam(value="targetId", defaultValue="", required=false) String targetId, @Valid UserManageVO userManageVO, BindingResult bindingResult, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
+		if (bindingResult.hasErrors()) {
+			CmmnDetailCodeVO voComCode = new CmmnDetailCodeVO();
+			voComCode.setCodeId("COM800");
+			model.addAttribute("userSeCodeList", cmmUseService.selectCmmCodeDetail(voComCode));
+			model.addAttribute("userManageVO", userManageVO);
+			model.addAttribute("MembersFileStoreWebPath", propertiesService.getString("Members.fileStoreWebPath"));
+			return "manage/usr/MemberUpdt";
+		}
   	  
 		// 아이디 체크
     	List<FileVO> result = null;
base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java
--- base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java
+++ base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java
@@ -1,6 +1,8 @@
 package egovframework.module.uss.umt.service;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -8,160 +10,212 @@
 public class UserManageVO extends ComDefaultVO implements Serializable {
 
     //CREDT_ID
+    @Size(max = 64, message = "신용정보키는 64자 이하여야 합니다.")
     private String credtId;
     
     //USER_SE_CODE
+    @NotBlank(message = "사용자구분은 필수입니다.")
+    @Size(max = 15, message = "사용자구분은 15자 이하여야 합니다.")
     private String userSeCode;
     
     //PASSWORD
+    @Size(max = 100, message = "비밀번호는 100자 이하여야 합니다.")
     private String password;
     
     //PASSWORD RE
+    @Size(max = 100, message = "비밀번호 확인은 100자 이하여야 합니다.")
     private String password2;
     
     //USER_NM
+    @NotBlank(message = "사용자명은 필수입니다.")
+    @Size(max = 100, message = "사용자명은 100자 이하여야 합니다.")
     private String userNm;
     
     //EMAIL_ADRES
+    @Size(max = 100, message = "이메일은 100자 이하여야 합니다.")
     private String emailAdres;
     
     //TLPHON_NO
+    @Size(max = 100, message = "전화번호는 100자 이하여야 합니다.")
     private String tlphonNo;
     
     //MOBLPHON_NO
+    @Size(max = 100, message = "휴대폰번호는 100자 이하여야 합니다.")
     private String moblphonNo;
     
     //ZIP
+    @Size(max = 100, message = "우편번호는 100자 이하여야 합니다.")
     private String zip;
     
     //ADRES
+    @Size(max = 100, message = "주소는 100자 이하여야 합니다.")
     private String adres;
     
     //ADRES_DETAIL
+    @Size(max = 100, message = "상세주소는 100자 이하여야 합니다.")
     private String adresDetail;
         
     //DELETE_AT
+    @Size(max = 1, message = "탈퇴여부는 1자여야 합니다.")
     private String deleteAt;
     
     //DELETE_PNTTM
     private java.util.Date deletePnttm;
     
     //BRTHDY
+    @Size(max = 100, message = "생년월일은 100자 이하여야 합니다.")
     private String brthdy;
     
     //BRTHDY
+    @Size(max = 100, message = "생년월일(연)은 100자 이하여야 합니다.")
     private String brthdy01;
     
     //BRTHDY
+    @Size(max = 100, message = "생년월일(월)은 100자 이하여야 합니다.")
     private String brthdy02;
     
     //BRTHDY
+    @Size(max = 100, message = "생년월일(일)은 100자 이하여야 합니다.")
     private String brthdy03;
 
     //인증서DN
+    @Size(max = 200, message = "인증서DN은 200자 이하여야 합니다.")
     private String crtfctDn;
 
     //인증서시리얼
+    @Size(max = 200, message = "인증서시리얼은 200자 이하여야 합니다.")
     private String crtfctSerial;
 
     //SEXDSTN
+    @Size(max = 15, message = "성별코드는 15자 이하여야 합니다.")
     private String sexdstn;
     
     //EMAIL_RECPTN_AT
+    @Size(max = 1, message = "이메일수신여부는 1자여야 합니다.")
     private String emailRecptnAt;
     
     //MOBLPHON_RECPTN_AT
+    @Size(max = 1, message = "문자수신여부는 1자여야 합니다.")
     private String moblphonRecptnAt;
     
     //PHOTO_ORIGINAL_FILE_NM
+    @Size(max = 255, message = "사진원본파일명은 255자 이하여야 합니다.")
     private String photoOriginalFileNm;
     
     //PHOTO_STRE_FILE_NM
+    @Size(max = 255, message = "사진저장파일명은 255자 이하여야 합니다.")
     private String photoStreFileNm;
     
     //CONFM_PNTTM
     private java.util.Date confmPnttm;
     
     //CONFM_AT
+    @Size(max = 1, message = "승인여부는 1자여야 합니다.")
     private String confmAt;
     
     //DELETE_RESN
+    @Size(max = 2500, message = "탈퇴사유는 2500자 이하여야 합니다.")
     private String deleteResn;
     
     //USER_IHIDNUM
+    @Size(max = 100, message = "주민번호는 100자 이하여야 합니다.")
     private String userIhidnum;
     
     //MESSAGE
+    @Size(max = 2500, message = "메시지는 2500자 이하여야 합니다.")
     private String message;
     
     //일련번호
     private int no;
 
     //집전화 앞번호
+    @Size(max = 10, message = "집전화 앞번호는 10자 이하여야 합니다.")
     private String tel1;
     
     //집전화 중간번호
+    @Size(max = 10, message = "집전화 중간번호는 10자 이하여야 합니다.")
     private String tel2;
     
     //집전화 끝번호
+    @Size(max = 10, message = "집전화 끝번호는 10자 이하여야 합니다.")
     private String tel3;
     
     //휴대전화 앞번호
+    @Size(max = 10, message = "휴대전화 앞번호는 10자 이하여야 합니다.")
     private String phone1;
     
     //휴대전화 중간번호
+    @Size(max = 10, message = "휴대전화 중간번호는 10자 이하여야 합니다.")
     private String phone2;
     
     //휴대전화 끝번호
+    @Size(max = 10, message = "휴대전화 끝번호는 10자 이하여야 합니다.")
     private String phone3;
     
     //이메일 계정
+    @Size(max = 100, message = "이메일 계정은 100자 이하여야 합니다.")
     private String email1;
     
     //이메일 도메인
+    @Size(max = 100, message = "이메일 도메인은 100자 이하여야 합니다.")
     private String email2;
     
     //본인확인email계정
+    @Size(max = 100, message = "본인확인 이메일 계정은 100자 이하여야 합니다.")
     private String email3;
     
     //본인확인email 도메인
+    @Size(max = 100, message = "본인확인 이메일 도메인은 100자 이하여야 합니다.")
     private String email4;
     
     //학년
+    @Size(max = 100, message = "학년은 100자 이하여야 합니다.")
     private String stGrade;
     
     //반
+    @Size(max = 100, message = "반은 100자 이하여야 합니다.")
     private String stClass;
     
     //번호
+    @Size(max = 100, message = "학생번호는 100자 이하여야 합니다.")
     private String stNumber;
     
     //학교 코드
+    @Size(max = 100, message = "학교코드는 100자 이하여야 합니다.")
     private String schulCode;
 
     //학교명
+    @Size(max = 30, message = "학교명은 30자 이하여야 합니다.")
     private String schulNm;
 
     //승인여부
+    @Size(max = 1, message = "승인여부는 1자여야 합니다.")
     private String confirmAt;
+    @Size(max = 1, message = "검색 승인여부는 1자여야 합니다.")
     private String searchConfirmAt;
 
     //최초등록IP
+    @Size(max = 128, message = "최초등록IP는 128자 이하여야 합니다.")
     private String frstRegistIp;
 
     /* 템플릿 여부 */
+    @Size(max = 1, message = "템플릿 여부는 1자여야 합니다.")
     private String templateAt;
 
     //검색-권한
+    @Size(max = 15, message = "검색 권한은 15자 이하여야 합니다.")
     private String searchUserSeCode;
 
     //웨일-sid
+    @Size(max = 100, message = "웨일 SID는 100자 이하여야 합니다.")
     private String sid;
 
     //sns타입
+    @Size(max = 15, message = "SNS 타입은 15자 이하여야 합니다.")
     private String snsTyCode;
 
     //SNS결과 메세지
+    @Size(max = 1000, message = "SNS 결과메세지는 1000자 이하여야 합니다.")
     private String resultMssage;
 
     public String getCredtId() {
Add a comment
List