회원관리 검증 어노테이션 적용
@e69c47a708a15313fb66930d965d11d12e8dba54
--- CHANGELOG_BOOT_JPA.md
+++ CHANGELOG_BOOT_JPA.md
... | ... | @@ -354,3 +354,11 @@ |
| 354 | 354 |
- 필수값/길이 제약 어노테이션 추가 |
| 355 | 355 |
- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/sym/ccm/cde/service/CmmnDetailCodeVO.java` |
| 356 | 356 |
- 필수값/길이 제약 어노테이션 추가 |
| 357 |
+ |
|
| 358 |
+## 추가 변경(16차) |
|
| 359 |
+ |
|
| 360 |
+### 회원관리 검증 어노테이션 적용 |
|
| 361 |
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/uss/umt/service/UserManageVO.java` |
|
| 362 |
+ - 회원관리 필드에 Bean Validation 어노테이션 추가 |
|
| 363 |
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java` |
|
| 364 |
+ - 등록/수정 시 `@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
... | ... | @@ -21,6 +21,8 @@ |
| 21 | 21 |
import org.springframework.web.bind.annotation.ModelAttribute; |
| 22 | 22 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 23 | 23 |
import org.springframework.web.bind.annotation.RequestParam; |
| 24 |
+ |
|
| 25 |
+import jakarta.validation.Valid; |
|
| 24 | 26 |
import org.springframework.web.multipart.MultipartFile; |
| 25 | 27 |
import org.springframework.web.multipart.MultipartHttpServletRequest; |
| 26 | 28 |
import org.springmodules.validation.commons.DefaultBeanValidator; |
... | ... | @@ -130,7 +132,13 @@ |
| 130 | 132 |
|
| 131 | 133 |
//사용자 정보를 DB에 입력한다. |
| 132 | 134 |
@RequestMapping(value = "/manage/usr/userSelectIndt.do") |
| 133 |
- public String EgovUserSelectIndt(final MultipartHttpServletRequest multiRequest,@ModelAttribute("searchVO") UserDefaultVO searchVO,UserManageVO userManageVO,BindingResult bindingResult, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
|
|
| 135 |
+ public String EgovUserSelectIndt(final MultipartHttpServletRequest multiRequest, @ModelAttribute("searchVO") UserDefaultVO searchVO, @Valid UserManageVO userManageVO, BindingResult bindingResult, ModelMap model, HttpServletRequest request, HttpServletResponse response)throws Exception {
|
|
| 136 |
+ if (bindingResult.hasErrors()) {
|
|
| 137 |
+ CmmnDetailCodeVO voComCode = new CmmnDetailCodeVO(); |
|
| 138 |
+ voComCode.setCodeId("COM800");
|
|
| 139 |
+ model.addAttribute("userSeCodeList", cmmUseService.selectCmmCodeDetail(voComCode));
|
|
| 140 |
+ return "manage/usr/MemberIndt"; |
|
| 141 |
+ } |
|
| 134 | 142 |
userManageVO.setFrstRegistIp(request.getRemoteAddr()); |
| 135 | 143 |
userManageService.insertUser(userManageVO); |
| 136 | 144 |
|
... | ... | @@ -192,7 +200,15 @@ |
| 192 | 200 |
|
| 193 | 201 |
//사용자정보 수정 처리 한다. |
| 194 | 202 |
@RequestMapping(value = "/manage/usr/userSelectUpdt.do") |
| 195 |
- 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 {
|
|
| 203 |
+ 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 {
|
|
| 204 |
+ if (bindingResult.hasErrors()) {
|
|
| 205 |
+ CmmnDetailCodeVO voComCode = new CmmnDetailCodeVO(); |
|
| 206 |
+ voComCode.setCodeId("COM800");
|
|
| 207 |
+ model.addAttribute("userSeCodeList", cmmUseService.selectCmmCodeDetail(voComCode));
|
|
| 208 |
+ model.addAttribute("userManageVO", userManageVO);
|
|
| 209 |
+ model.addAttribute("MembersFileStoreWebPath", propertiesService.getString("Members.fileStoreWebPath"));
|
|
| 210 |
+ return "manage/usr/MemberUpdt"; |
|
| 211 |
+ } |
|
| 196 | 212 |
|
| 197 | 213 |
// 아이디 체크 |
| 198 | 214 |
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
... | ... | @@ -1,6 +1,8 @@ |
| 1 | 1 |
package egovframework.module.uss.umt.service; |
| 2 | 2 |
|
| 3 | 3 |
import egovframework.com.cmm.ComDefaultVO; |
| 4 |
+import jakarta.validation.constraints.NotBlank; |
|
| 5 |
+import jakarta.validation.constraints.Size; |
|
| 4 | 6 |
|
| 5 | 7 |
import java.io.Serializable; |
| 6 | 8 |
import java.util.Date; |
... | ... | @@ -8,160 +10,212 @@ |
| 8 | 10 |
public class UserManageVO extends ComDefaultVO implements Serializable {
|
| 9 | 11 |
|
| 10 | 12 |
//CREDT_ID |
| 13 |
+ @Size(max = 64, message = "신용정보키는 64자 이하여야 합니다.") |
|
| 11 | 14 |
private String credtId; |
| 12 | 15 |
|
| 13 | 16 |
//USER_SE_CODE |
| 17 |
+ @NotBlank(message = "사용자구분은 필수입니다.") |
|
| 18 |
+ @Size(max = 15, message = "사용자구분은 15자 이하여야 합니다.") |
|
| 14 | 19 |
private String userSeCode; |
| 15 | 20 |
|
| 16 | 21 |
//PASSWORD |
| 22 |
+ @Size(max = 100, message = "비밀번호는 100자 이하여야 합니다.") |
|
| 17 | 23 |
private String password; |
| 18 | 24 |
|
| 19 | 25 |
//PASSWORD RE |
| 26 |
+ @Size(max = 100, message = "비밀번호 확인은 100자 이하여야 합니다.") |
|
| 20 | 27 |
private String password2; |
| 21 | 28 |
|
| 22 | 29 |
//USER_NM |
| 30 |
+ @NotBlank(message = "사용자명은 필수입니다.") |
|
| 31 |
+ @Size(max = 100, message = "사용자명은 100자 이하여야 합니다.") |
|
| 23 | 32 |
private String userNm; |
| 24 | 33 |
|
| 25 | 34 |
//EMAIL_ADRES |
| 35 |
+ @Size(max = 100, message = "이메일은 100자 이하여야 합니다.") |
|
| 26 | 36 |
private String emailAdres; |
| 27 | 37 |
|
| 28 | 38 |
//TLPHON_NO |
| 39 |
+ @Size(max = 100, message = "전화번호는 100자 이하여야 합니다.") |
|
| 29 | 40 |
private String tlphonNo; |
| 30 | 41 |
|
| 31 | 42 |
//MOBLPHON_NO |
| 43 |
+ @Size(max = 100, message = "휴대폰번호는 100자 이하여야 합니다.") |
|
| 32 | 44 |
private String moblphonNo; |
| 33 | 45 |
|
| 34 | 46 |
//ZIP |
| 47 |
+ @Size(max = 100, message = "우편번호는 100자 이하여야 합니다.") |
|
| 35 | 48 |
private String zip; |
| 36 | 49 |
|
| 37 | 50 |
//ADRES |
| 51 |
+ @Size(max = 100, message = "주소는 100자 이하여야 합니다.") |
|
| 38 | 52 |
private String adres; |
| 39 | 53 |
|
| 40 | 54 |
//ADRES_DETAIL |
| 55 |
+ @Size(max = 100, message = "상세주소는 100자 이하여야 합니다.") |
|
| 41 | 56 |
private String adresDetail; |
| 42 | 57 |
|
| 43 | 58 |
//DELETE_AT |
| 59 |
+ @Size(max = 1, message = "탈퇴여부는 1자여야 합니다.") |
|
| 44 | 60 |
private String deleteAt; |
| 45 | 61 |
|
| 46 | 62 |
//DELETE_PNTTM |
| 47 | 63 |
private java.util.Date deletePnttm; |
| 48 | 64 |
|
| 49 | 65 |
//BRTHDY |
| 66 |
+ @Size(max = 100, message = "생년월일은 100자 이하여야 합니다.") |
|
| 50 | 67 |
private String brthdy; |
| 51 | 68 |
|
| 52 | 69 |
//BRTHDY |
| 70 |
+ @Size(max = 100, message = "생년월일(연)은 100자 이하여야 합니다.") |
|
| 53 | 71 |
private String brthdy01; |
| 54 | 72 |
|
| 55 | 73 |
//BRTHDY |
| 74 |
+ @Size(max = 100, message = "생년월일(월)은 100자 이하여야 합니다.") |
|
| 56 | 75 |
private String brthdy02; |
| 57 | 76 |
|
| 58 | 77 |
//BRTHDY |
| 78 |
+ @Size(max = 100, message = "생년월일(일)은 100자 이하여야 합니다.") |
|
| 59 | 79 |
private String brthdy03; |
| 60 | 80 |
|
| 61 | 81 |
//인증서DN |
| 82 |
+ @Size(max = 200, message = "인증서DN은 200자 이하여야 합니다.") |
|
| 62 | 83 |
private String crtfctDn; |
| 63 | 84 |
|
| 64 | 85 |
//인증서시리얼 |
| 86 |
+ @Size(max = 200, message = "인증서시리얼은 200자 이하여야 합니다.") |
|
| 65 | 87 |
private String crtfctSerial; |
| 66 | 88 |
|
| 67 | 89 |
//SEXDSTN |
| 90 |
+ @Size(max = 15, message = "성별코드는 15자 이하여야 합니다.") |
|
| 68 | 91 |
private String sexdstn; |
| 69 | 92 |
|
| 70 | 93 |
//EMAIL_RECPTN_AT |
| 94 |
+ @Size(max = 1, message = "이메일수신여부는 1자여야 합니다.") |
|
| 71 | 95 |
private String emailRecptnAt; |
| 72 | 96 |
|
| 73 | 97 |
//MOBLPHON_RECPTN_AT |
| 98 |
+ @Size(max = 1, message = "문자수신여부는 1자여야 합니다.") |
|
| 74 | 99 |
private String moblphonRecptnAt; |
| 75 | 100 |
|
| 76 | 101 |
//PHOTO_ORIGINAL_FILE_NM |
| 102 |
+ @Size(max = 255, message = "사진원본파일명은 255자 이하여야 합니다.") |
|
| 77 | 103 |
private String photoOriginalFileNm; |
| 78 | 104 |
|
| 79 | 105 |
//PHOTO_STRE_FILE_NM |
| 106 |
+ @Size(max = 255, message = "사진저장파일명은 255자 이하여야 합니다.") |
|
| 80 | 107 |
private String photoStreFileNm; |
| 81 | 108 |
|
| 82 | 109 |
//CONFM_PNTTM |
| 83 | 110 |
private java.util.Date confmPnttm; |
| 84 | 111 |
|
| 85 | 112 |
//CONFM_AT |
| 113 |
+ @Size(max = 1, message = "승인여부는 1자여야 합니다.") |
|
| 86 | 114 |
private String confmAt; |
| 87 | 115 |
|
| 88 | 116 |
//DELETE_RESN |
| 117 |
+ @Size(max = 2500, message = "탈퇴사유는 2500자 이하여야 합니다.") |
|
| 89 | 118 |
private String deleteResn; |
| 90 | 119 |
|
| 91 | 120 |
//USER_IHIDNUM |
| 121 |
+ @Size(max = 100, message = "주민번호는 100자 이하여야 합니다.") |
|
| 92 | 122 |
private String userIhidnum; |
| 93 | 123 |
|
| 94 | 124 |
//MESSAGE |
| 125 |
+ @Size(max = 2500, message = "메시지는 2500자 이하여야 합니다.") |
|
| 95 | 126 |
private String message; |
| 96 | 127 |
|
| 97 | 128 |
//일련번호 |
| 98 | 129 |
private int no; |
| 99 | 130 |
|
| 100 | 131 |
//집전화 앞번호 |
| 132 |
+ @Size(max = 10, message = "집전화 앞번호는 10자 이하여야 합니다.") |
|
| 101 | 133 |
private String tel1; |
| 102 | 134 |
|
| 103 | 135 |
//집전화 중간번호 |
| 136 |
+ @Size(max = 10, message = "집전화 중간번호는 10자 이하여야 합니다.") |
|
| 104 | 137 |
private String tel2; |
| 105 | 138 |
|
| 106 | 139 |
//집전화 끝번호 |
| 140 |
+ @Size(max = 10, message = "집전화 끝번호는 10자 이하여야 합니다.") |
|
| 107 | 141 |
private String tel3; |
| 108 | 142 |
|
| 109 | 143 |
//휴대전화 앞번호 |
| 144 |
+ @Size(max = 10, message = "휴대전화 앞번호는 10자 이하여야 합니다.") |
|
| 110 | 145 |
private String phone1; |
| 111 | 146 |
|
| 112 | 147 |
//휴대전화 중간번호 |
| 148 |
+ @Size(max = 10, message = "휴대전화 중간번호는 10자 이하여야 합니다.") |
|
| 113 | 149 |
private String phone2; |
| 114 | 150 |
|
| 115 | 151 |
//휴대전화 끝번호 |
| 152 |
+ @Size(max = 10, message = "휴대전화 끝번호는 10자 이하여야 합니다.") |
|
| 116 | 153 |
private String phone3; |
| 117 | 154 |
|
| 118 | 155 |
//이메일 계정 |
| 156 |
+ @Size(max = 100, message = "이메일 계정은 100자 이하여야 합니다.") |
|
| 119 | 157 |
private String email1; |
| 120 | 158 |
|
| 121 | 159 |
//이메일 도메인 |
| 160 |
+ @Size(max = 100, message = "이메일 도메인은 100자 이하여야 합니다.") |
|
| 122 | 161 |
private String email2; |
| 123 | 162 |
|
| 124 | 163 |
//본인확인email계정 |
| 164 |
+ @Size(max = 100, message = "본인확인 이메일 계정은 100자 이하여야 합니다.") |
|
| 125 | 165 |
private String email3; |
| 126 | 166 |
|
| 127 | 167 |
//본인확인email 도메인 |
| 168 |
+ @Size(max = 100, message = "본인확인 이메일 도메인은 100자 이하여야 합니다.") |
|
| 128 | 169 |
private String email4; |
| 129 | 170 |
|
| 130 | 171 |
//학년 |
| 172 |
+ @Size(max = 100, message = "학년은 100자 이하여야 합니다.") |
|
| 131 | 173 |
private String stGrade; |
| 132 | 174 |
|
| 133 | 175 |
//반 |
| 176 |
+ @Size(max = 100, message = "반은 100자 이하여야 합니다.") |
|
| 134 | 177 |
private String stClass; |
| 135 | 178 |
|
| 136 | 179 |
//번호 |
| 180 |
+ @Size(max = 100, message = "학생번호는 100자 이하여야 합니다.") |
|
| 137 | 181 |
private String stNumber; |
| 138 | 182 |
|
| 139 | 183 |
//학교 코드 |
| 184 |
+ @Size(max = 100, message = "학교코드는 100자 이하여야 합니다.") |
|
| 140 | 185 |
private String schulCode; |
| 141 | 186 |
|
| 142 | 187 |
//학교명 |
| 188 |
+ @Size(max = 30, message = "학교명은 30자 이하여야 합니다.") |
|
| 143 | 189 |
private String schulNm; |
| 144 | 190 |
|
| 145 | 191 |
//승인여부 |
| 192 |
+ @Size(max = 1, message = "승인여부는 1자여야 합니다.") |
|
| 146 | 193 |
private String confirmAt; |
| 194 |
+ @Size(max = 1, message = "검색 승인여부는 1자여야 합니다.") |
|
| 147 | 195 |
private String searchConfirmAt; |
| 148 | 196 |
|
| 149 | 197 |
//최초등록IP |
| 198 |
+ @Size(max = 128, message = "최초등록IP는 128자 이하여야 합니다.") |
|
| 150 | 199 |
private String frstRegistIp; |
| 151 | 200 |
|
| 152 | 201 |
/* 템플릿 여부 */ |
| 202 |
+ @Size(max = 1, message = "템플릿 여부는 1자여야 합니다.") |
|
| 153 | 203 |
private String templateAt; |
| 154 | 204 |
|
| 155 | 205 |
//검색-권한 |
| 206 |
+ @Size(max = 15, message = "검색 권한은 15자 이하여야 합니다.") |
|
| 156 | 207 |
private String searchUserSeCode; |
| 157 | 208 |
|
| 158 | 209 |
//웨일-sid |
| 210 |
+ @Size(max = 100, message = "웨일 SID는 100자 이하여야 합니다.") |
|
| 159 | 211 |
private String sid; |
| 160 | 212 |
|
| 161 | 213 |
//sns타입 |
| 214 |
+ @Size(max = 15, message = "SNS 타입은 15자 이하여야 합니다.") |
|
| 162 | 215 |
private String snsTyCode; |
| 163 | 216 |
|
| 164 | 217 |
//SNS결과 메세지 |
| 218 |
+ @Size(max = 1000, message = "SNS 결과메세지는 1000자 이하여야 합니다.") |
|
| 165 | 219 |
private String resultMssage; |
| 166 | 220 |
|
| 167 | 221 |
public String getCredtId() {
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?