일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MYSQL
- RADIO
- 호환성
- java
- 오라클
- json
- 이클립스
- HTML5
- checbox
- html
- 문자열
- 전자정부 표준프레임워크
- JSTL
- DB
- maven
- 스크립트
- 톰캣
- exception
- @RequestBody
- 네이버스마트 에디터
- 한글
- jquery
- php
- Oracle
- SSL
- null
- 날짜
- switch
- spring form tag
- 웹 플랫폼 설치 관리자
- Today
- Total
개인적인 정리
전자정부표준프레임워크 validation Rule 추가 본문
전자정부표준프레임워크에 Spring Modules를 이용한 Jakarta Commons Validator 를 사용하는 방법을 알아봤다.
이 글은 아래 글을 기본으로 한다.
https://web-obj.tistory.com/456
Commons Validator 에서 제공하는 것 외에 rule을 추가해보고자 한다.
아래 전자정부표준프레임워크 위키문서를 보고 따라했다.
www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:validation:add_rules_in_commons_validator
위키문서에서는 주민등록번호 validator 를 추가하는 예제를 들어 설명하고 있다.
*일단 가상의 룰을 추가하는데, 문자열이 coffee 이면 true, 아니면 false를 return 하도록 추가해보자.
(실행환경에 몇몇의 예제들이 구현되어 있는데, egovframework.rte.ptl.mvc.validation.RteFieldChecks.class 파일을 열어보면 한글, 영문등 몇개의 validator를 제공하고 있어 유용하게 쓸 수 있을 것 같고, 참고용으로는 아주 좋다.)
먼저 수정 또는 추가해야 할 파일들을 생각해보자.
1. 클래스 생성
- validation rule을 추가할 자바 클래스
2. com-rules.xml
- validator 가 정의된 xml파일(javascript 포함)
3. message 파일들
- message-common_en.properties
- message-common-ko.properties
4. form-validation 이 정의된 xml 파일
1. 클래스 생성
- /egov/src/main/java/egovframework/com/cmm/validation/CustomValidator.java 로 생성하였다.
- 적당히 원하는 위치에 적당한 파일명으로 생성한다.
- 소스내용은 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
package egovframework.com.cmm.validation;
import org.apache.commons.validator.Field;
import org.apache.commons.validator.ValidatorAction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.Errors;
import org.springmodules.validation.commons.FieldChecks;
import egovframework.rte.ptl.mvc.validation.RteGenericValidator;
public class CustomValidator extends FieldChecks {
/**
* 커피여부 체크
*
* @param bean
* @param va
* @param field
* @param errors
* @return
*/
public static boolean validateCoffee(Object bean, ValidatorAction va, Field field, Errors errors) {
String value = FieldChecks.extractValue(bean, field);
if (!"coffee".equals(value)) {
FieldChecks.rejectValue(errors, field, va);
return false;
} else {
return true;
}
}
}
|
cs |
2. com-rules.xml 에 validator 추가
- 대략적으로 아래와 같은 내용을 추가한다.
- validator 를 정의하는 부분에서 아래내용은 작업한 내용을 나머지는 그대로 두었다. javascript 영역도 적당히 수정해주는데, com-rules.xml 에 있는 다른 validator정의를 가져다가 수정해서 작업하면 그다지 어렵지 않다.
name="coffee"
classname="egovframework.com.cmm.validation.CustomValidator"
method="validateCoffee"
msg="errors.coffee"
작업하고 있는 내용으로 넣어준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<validator name="coffee"
classname="egovframework.com.cmm.validation.CustomValidator"
method="validateCoffee"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.springframework.validation.Errors"
msg="errors.coffee">
<javascript><![CDATA[
function validateCoffee(form){
var bValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
oCoffee = new coffee();
for (x in oCoffee) {
var field = form[oCoffee[x][0]];
if (field.type == 'text' || field.type == 'textarea') {
if (trim(field.value).length==0 || !checkCoffee(field.value)) {
if (i == 0) {
focusField = field;
}
fields[i++] = oCoffee[x][1];
bValid = false;
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return bValid;
}
function checkCoffee(str){
for(var i=0;i<str.length;i++){
if( str !='coffee') {
return false;
}
}
return true;
}
]]>
</javascript>
</validator>
|
cs |
3. message 파일들 수정
- com-rules.xml에 validator를 정의하면서 msg="errors.coffee" 라고 하였다. 따라서 errors.coffee를 message파일들에 작성을 해줘야 한다.
- message-common_ko.properties 와 message-common_en.properties 파일 2개에 아래와 같은 내용으로 동일하게 작성해줬다.
1
|
errors.coffee={0}은(는) 커피만 입력할 수 있습니다.
|
cs |
4. form-validation 이 정의된 xml 파일을 수정한다.
- 이전글에서 Aaaa.xml 로 만들었었다.
- 작업하는 JSP의 폼과 필드와 매칭되어 validation을 어떻게 적용할 것인가를 정의하는 파일정로라고 말할 수 있겠다.
<field property="name" depends="required, maxlength, coffee"> 라고.. 지금 정의한 coffee를 넣어주었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
<form-validation>
<formset>
<form name="aaaaVO">
<field property="name" depends="required, maxlength, coffee">
<arg0 key="Aaaa.regist.name" />
<arg1 key="10" resource="true"/>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
|
cs |
5. 이제 jsp파일을 열어서 폼을 전송해보자.
- jsp파일 작성에 대해서는 이전글에서 모두 기술되어 있으니 참고한다.
- 'coffee'라고 입력하지 않는 경우 아래와 같이 출력된다.
client-side
server-side
이제 완료가 되었다.
Done
'전자정부표준프레임워크' 카테고리의 다른 글
전자정부표준프레임워크에서 엑셀 다운로드 (0) | 2020.10.06 |
---|---|
이클립스 초기 설정 (0) | 2020.09.22 |
전자정부표준프레임워크 paging 추가하기 (1) | 2020.09.17 |
JSP 커스텀 태그 (JSP Custom Tag) 예제 (0) | 2020.09.14 |
전자정부표준프레임워크 validation 검증/체크 (0) | 2020.09.06 |
RedirectAttributes(redirect 객체 전달) (0) | 2020.09.03 |
Redirect와 Forward 의 차이 (0) | 2020.09.03 |
spring JSP Tag Library (0) | 2020.08.31 |