nbs0105 / BOOT_CMS star
beom 4 days ago
게시판 검증 어노테이션 적용
@69e56a79bc9a8dbe70988ab08d35232e22db396c
CHANGELOG_BOOT_JPA.md
--- CHANGELOG_BOOT_JPA.md
+++ CHANGELOG_BOOT_JPA.md
@@ -362,3 +362,17 @@
   - 회원관리 필드에 Bean Validation 어노테이션 추가
 - `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/com/mng/uss/umt/web/UserManageController.java`
   - 등록/수정 시 `@Valid` 적용 및 오류 시 화면 복귀 처리
+
+## 추가 변경(17차)
+
+### 게시판 검증 어노테이션 적용
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/BoardMasterVO.java`
+  - 게시판 속성 필드에 Bean Validation 어노테이션 추가
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/BoardVO.java`
+  - 게시물 필수값/길이 제약 어노테이션 추가
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CommentVO.java`
+  - 댓글 필수값/길이 제약 어노테이션 추가
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CtgryMasterVO.java`
+  - 카테고리마스터 필수값/길이 제약 어노테이션 추가
+- `/Users/beom/Documents/intellij/cms/FoxeduBaseCMS/base/src/main/java/egovframework/module/cop/bbs/service/CtgryVO.java`
+  - 카테고리 필수값/길이 제약 어노테이션 추가
base/src/main/java/egovframework/module/cop/bbs/service/BoardMasterVO.java
--- base/src/main/java/egovframework/module/cop/bbs/service/BoardMasterVO.java
+++ base/src/main/java/egovframework/module/cop/bbs/service/BoardMasterVO.java
@@ -5,6 +5,8 @@
 import java.util.List;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.collections.Factory;
 import org.apache.commons.collections.ListUtils;
 
@@ -12,69 +14,100 @@
 public class BoardMasterVO extends ComDefaultVO implements Serializable {
 
 	//게시판 속성코드
+	@NotBlank(message = "게시판속성코드는 필수입니다.")
+	@Size(max = 20, message = "게시판속성코드는 20자 이하여야 합니다.")
 	private String bbsAttrbCode = "BBSA03";
 
 	//게시판 아이디
+	@NotBlank(message = "게시판ID는 필수입니다.")
+	@Size(max = 20, message = "게시판ID는 20자 이하여야 합니다.")
 	private String bbsId = "";
 
 	//게시판 명
+	@NotBlank(message = "게시판명은 필수입니다.")
+	@Size(max = 50, message = "게시판명은 50자 이하여야 합니다.")
 	private String bbsNm = "";
 
 	//게시판 서비스여부
+	@NotBlank(message = "서비스여부는 필수입니다.")
+	@Size(max = 1, message = "서비스여부는 1자여야 합니다.")
 	private String svcAt = "Y";
 
 	//파일첨부가능여부
+	@NotBlank(message = "파일첨부가능여부는 필수입니다.")
+	@Size(max = 1, message = "파일첨부가능여부는 1자여야 합니다.")
 	private String fileAtchPosblAt = "Y";
 
 	//첨부가능파일숫자
+	@Size(max = 10, message = "첨부가능파일숫자는 10자 이하여야 합니다.")
 	private String posblAtchFileNumber = "5";
 
 	//첨부가능파일사이즈
+	@Size(max = 10, message = "첨부가능파일사이즈는 10자 이하여야 합니다.")
 	private String posblAtchFileSize = "100";
 
 	//답장가능여부
+	@NotBlank(message = "답장가능여부는 필수입니다.")
+	@Size(max = 1, message = "답장가능여부는 1자여야 합니다.")
 	private String replyPosblAt = "N";
 
 	//소스 아이디
+	@Size(max = 20, message = "소스ID는 20자 이하여야 합니다.")
 	private String sourcId = "BBSSRC_0000000000001";
 
 	//템플릿 아이디
+	@Size(max = 20, message = "템플릿ID는 20자 이하여야 합니다.")
 	private String tmplatId = "BBSTMP_0000000000001";
 
 	//사용플래그
 	private String bbsUseFlag = "";
 
 	//대상 아이디
+	@Size(max = 20, message = "대상ID는 20자 이하여야 합니다.")
 	private String trgetId = "SYSTEM_DEFAULT_BOARD";
 
 	//등록구분코드
+	@Size(max = 6, message = "등록구분코드는 6자 이하여야 합니다.")
 	private String registSeCode = "REGC01";
 
 	//댓글 여부
+	@NotBlank(message = "댓글사용여부는 필수입니다.")
+	@Size(max = 20, message = "댓글사용여부는 20자 이하여야 합니다.")
 	private String commentUseAt = "N";
 
 	//만족도조사
 	private String stsfdgAt = "";
 
 	//시스템구분
+	@Size(max = 15, message = "시스템구분코드는 15자 이하여야 합니다.")
 	private String sysTyCode = "";
 
 	//카테고리마스터 아이디
+	@Size(max = 20, message = "카테고리마스터ID는 20자 이하여야 합니다.")
 	private String ctgrymasterId = "";
 
 	//삭제여부
+	@Size(max = 1, message = "삭제여부는 1자여야 합니다.")
 	private String  deleteAt= "N";
 
 	//공개/비공개 사용여부
+	@NotBlank(message = "공개여부는 필수입니다.")
+	@Size(max = 1, message = "공개여부는 1자여야 합니다.")
 	private String  othbcUseAt= "N";
 
 	//보기권한
+	@NotBlank(message = "보기권한은 필수입니다.")
+	@Size(max = 30, message = "보기권한은 30자 이하여야 합니다.")
 	private String  inqireAuthor = "01";
 
 	//쓰기권한
+	@NotBlank(message = "쓰기권한은 필수입니다.")
+	@Size(max = 30, message = "쓰기권한은 30자 이하여야 합니다.")
 	private String  registAuthor = "02";
 
 	//답글권한
+	@NotBlank(message = "답글권한은 필수입니다.")
+	@Size(max = 30, message = "답글권한은 30자 이하여야 합니다.")
 	private String  answerAuthor = "02";
 
 	//카테고리리스트
base/src/main/java/egovframework/module/cop/bbs/service/BoardVO.java
--- base/src/main/java/egovframework/module/cop/bbs/service/BoardVO.java
+++ base/src/main/java/egovframework/module/cop/bbs/service/BoardVO.java
@@ -6,6 +6,8 @@
 import java.util.List;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import net.sf.json.JSONObject;
 import org.apache.commons.lang.builder.ToStringBuilder;
 
@@ -26,21 +28,29 @@
     private java.lang.Integer upperNttNo = 0;
 
     //게시판ID
+    @NotBlank(message = "게시판ID는 필수입니다.")
+    @Size(max = 20, message = "게시판ID는 20자 이하여야 합니다.")
     private java.lang.String bbsId;
 
     //카테고리ID
+    @Size(max = 20, message = "카테고리ID는 20자 이하여야 합니다.")
     private java.lang.String ctgryId;
 
     ///카테고리명
     private java.lang.String ctgryNm;
 
     //게시물 명
+    @NotBlank(message = "게시물제목은 필수입니다.")
+    @Size(max = 255, message = "게시물제목은 255자 이하여야 합니다.")
     private java.lang.String nttSj;
 
     //게시물 내용
+    @NotBlank(message = "게시물내용은 필수입니다.")
     private java.lang.String nttCn;
 
     ///작성자
+    @NotBlank(message = "작성자명은 필수입니다.")
+    @Size(max = 20, message = "작성자명은 20자 이하여야 합니다.")
     private java.lang.String ntcrNm;
 
     //조회수
@@ -50,12 +60,15 @@
     private java.math.BigDecimal recomendCo = BigDecimal.ZERO;
 
     //생성IP
+    @Size(max = 128, message = "생성IP는 128자 이하여야 합니다.")
     private java.lang.String creatIp;
 
     //공지글여부
+    @Size(max = 1, message = "공지여부는 1자여야 합니다.")
     private java.lang.String noticeAt = "N";
 
     //공개여부
+    @Size(max = 1, message = "공개여부는 1자여야 합니다.")
     private java.lang.String othbcAt = "Y";
 
     //순서
@@ -65,15 +78,18 @@
     private java.lang.String ctgryPathById;
 
     //처리상태코드
+    @Size(max = 15, message = "처리상태코드는 15자 이하여야 합니다.")
     private java.lang.String processSttusCode;
 
     //처리상태명
     private java.lang.String processSttusNm;
 
     //확장첨부파일 - ID
+    @Size(max = 20, message = "확장첨부파일ID는 20자 이하여야 합니다.")
     private java.lang.String estnAtchFileId;
 
     //확장데이터
+    @Size(max = 10000, message = "확장데이터는 10000자 이하여야 합니다.")
     private java.lang.String estnData;
 
     //확장파싱데이터
@@ -92,18 +108,23 @@
     private String lo;
 
     //임시필드01
+    @Size(max = 100, message = "임시필드01은 100자 이하여야 합니다.")
     private String tmp01;
 
     //임시필드02
+    @Size(max = 100, message = "임시필드02는 100자 이하여야 합니다.")
     private String tmp02;
 
     //임시필드03
+    @Size(max = 100, message = "임시필드03은 100자 이하여야 합니다.")
     private String tmp03;
 
     //임시필드04
+    @Size(max = 200, message = "임시필드04는 200자 이하여야 합니다.")
     private String tmp04;
 
     //임시필드05
+    @Size(max = 200, message = "임시필드05는 200자 이하여야 합니다.")
     private String tmp05;
 
     //뷰 타입
@@ -140,9 +161,11 @@
     private String commentUseAt = "";
 
     //게시판 템플릿 아이디
+    @Size(max = 20, message = "게시판템플릿ID는 20자 이하여야 합니다.")
     private String tmplatId = "";
 
     //게시판속성코드
+    @Size(max = 20, message = "게시판속성코드는 20자 이하여야 합니다.")
     private String bbsAttrbCode = "";
 
     //게시판 명
@@ -158,12 +181,14 @@
     private String storeImagePath = "";
 
     //카테고리마스터 아이디
+    @Size(max = 20, message = "카테고리마스터ID는 20자 이하여야 합니다.")
     private String ctgrymasterId = "";
 
     //평가점수
     private int scoreSum = 0;
 
     //대상 아이디
+    @Size(max = 20, message = "대상ID는 20자 이하여야 합니다.")
     private String trgetId = "";
 
     //검색 처리상태
@@ -173,12 +198,14 @@
     private String registAction = "";
 
     //임시첨부파일 그룹아이디
+    @Size(max = 20, message = "첨부파일 그룹ID는 20자 이하여야 합니다.")
     private String fileGroupId = "";
 
     //이전 게시물번호
     private java.math.BigDecimal oldNttNo;
 
     //템플릿 import여부
+    @Size(max = 1, message = "템플릿 import 여부는 1자여야 합니다.")
     private String tmplatImportAt = "";
 
     private String searchMemType = "";
@@ -202,9 +229,11 @@
     private String isMainFlag = "";
 
     //마지막 답변자ID
+    @Size(max = 100, message = "마지막답변자ID는 100자 이하여야 합니다.")
     private String lastAnswrrId;
 
     //마지막 답변자명
+    @Size(max = 20, message = "마지막답변자명은 20자 이하여야 합니다.")
     private String lastAnswrrNm;
 
     public BigDecimal getNttNo() {
base/src/main/java/egovframework/module/cop/bbs/service/CommentVO.java
--- base/src/main/java/egovframework/module/cop/bbs/service/CommentVO.java
+++ base/src/main/java/egovframework/module/cop/bbs/service/CommentVO.java
@@ -5,6 +5,9 @@
 import java.util.List;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 import egovframework.rte.fdl.string.EgovStringUtil;
@@ -16,12 +19,17 @@
 	private java.math.BigDecimal commentNo;
 
 	//게시물 번호
+	@NotNull(message = "게시물번호는 필수입니다.")
 	private BigDecimal nttNo = BigDecimal.ZERO;
 
 	//작성자명
+	@NotBlank(message = "작성자명은 필수입니다.")
+	@Size(max = 20, message = "작성자명은 20자 이하여야 합니다.")
 	private String wrterNm = "";
 
 	//댓글 내용
+	@NotBlank(message = "댓글내용은 필수입니다.")
+	@Size(max = 2500, message = "댓글내용은 2500자 이하여야 합니다.")
 	private String commentCn = "";
 
     //현재페이지
@@ -51,11 +59,13 @@
     //수정 처리 여부
     private boolean isModified = false;
     
-    //게시판 소스 아이디
-    private String sourcId = "";
-    
-    //게시판 템플릿 아이디
-    private String tmplatId = "";
+	//게시판 소스 아이디
+	@Size(max = 20, message = "게시판소스ID는 20자 이하여야 합니다.")
+	private String sourcId = "";
+	
+	//게시판 템플릿 아이디
+	@Size(max = 20, message = "게시판템플릿ID는 20자 이하여야 합니다.")
+	private String tmplatId = "";
     
     private String prntOrdrCode = "";
     
@@ -65,9 +75,11 @@
     //게시물번호리스트
     private List<String> nttNoArr;
     
-    //대상 아이디
-    private String trgetId = "";
+	//대상 아이디
+	@Size(max = 20, message = "대상ID는 20자 이하여야 합니다.")
+	private String trgetId = "";
 
+	@Size(max = 70, message = "정렬번호코드는 70자 이하여야 합니다.")
 	private String ordrCode = "";
 
 	private int ordrCodeDp = 0;
base/src/main/java/egovframework/module/cop/bbs/service/CtgryMasterVO.java
--- base/src/main/java/egovframework/module/cop/bbs/service/CtgryMasterVO.java
+++ base/src/main/java/egovframework/module/cop/bbs/service/CtgryMasterVO.java
@@ -4,6 +4,8 @@
 import java.sql.Date;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 
@@ -11,12 +13,17 @@
 public class CtgryMasterVO extends ComDefaultVO {
 
     //시스템구분코드
+    @Size(max = 15, message = "시스템구분코드는 15자 이하여야 합니다.")
     private String sysTyCode = "";
 
     //CTGRYMASTER_ID
+    @NotBlank(message = "카테고리마스터ID는 필수입니다.")
+    @Size(max = 20, message = "카테고리마스터ID는 20자 이하여야 합니다.")
     private java.lang.String ctgrymasterId;
 
     //CTGRYMASTER_NM
+    @NotBlank(message = "카테고리마스터명은 필수입니다.")
+    @Size(max = 50, message = "카테고리마스터명은 50자 이하여야 합니다.")
     private java.lang.String ctgrymasterNm;
 
     // CREAT_DT
base/src/main/java/egovframework/module/cop/bbs/service/CtgryVO.java
--- base/src/main/java/egovframework/module/cop/bbs/service/CtgryVO.java
+++ base/src/main/java/egovframework/module/cop/bbs/service/CtgryVO.java
@@ -3,27 +3,38 @@
 import java.io.Serializable;
 
 import egovframework.com.cmm.ComDefaultVO;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Size;
 import org.apache.commons.lang.builder.ToStringBuilder;
 
 @SuppressWarnings("serial")
 public class CtgryVO extends ComDefaultVO {
 
     //카테고리ID
+    @NotBlank(message = "카테고리ID는 필수입니다.")
+    @Size(max = 20, message = "카테고리ID는 20자 이하여야 합니다.")
     private java.lang.String ctgryId;
 
     //카테고리마스터ID
+    @NotBlank(message = "카테고리마스터ID는 필수입니다.")
+    @Size(max = 20, message = "카테고리마스터ID는 20자 이하여야 합니다.")
     private java.lang.String ctgrymasterId;
 
     //상위카테고리ID
+    @Size(max = 20, message = "상위카테고리ID는 20자 이하여야 합니다.")
     private java.lang.String upperCtgryId;
 
     //카테고리명
+    @NotBlank(message = "카테고리명은 필수입니다.")
+    @Size(max = 50, message = "카테고리명은 50자 이하여야 합니다.")
     private java.lang.String ctgryNm;
 
     //카테고리 설명
+    @Size(max = 150, message = "카테고리설명은 150자 이하여야 합니다.")
     private java.lang.String ctgryCn;
 
     //카테고리 값
+    @Size(max = 20, message = "카테고리값은 20자 이하여야 합니다.")
     private java.lang.String ctgryVal;
 
     //SORT_ORDR
@@ -39,6 +50,7 @@
     private int ctgryLevel = 1;
 
     //정렬순서코드  - U:위로, D:아래로
+    @Size(max = 1, message = "정렬순서코드는 1자여야 합니다.")
     private String sortTyCode = "";
 
 
Add a comment
List