작업 환경
eGovFramework Version : 3.8
Eclipse Version : Oxygen.3a Release (4.7.3a)
JDK Version : 1.8
데이터의 validator는 화면에서 입력한 데이터를 Server로 보내기 전 검증과 Server에서는 받은 데이터를 처리하기 전의 검증으로 나뉘어 집니다. 뭏론 화면에서 javascript로 파라미터를 하나씩 검증하는 방법을 사용하기도 하지만 작업이 어렵지 않으니 한번 사용해 봅니다.
작업도 간단합니다. jsp, xml, Vo, Controller만 작성해 주면 됩니다.
Vo 작성
service 패키지를 만들고 vo를 생성하여 입력 받을 데이터들을 설정 합니다
public class ValidatorTestVo {
private String id; private String name; private int age;
public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } |
validator xml 작성
resource 폴더 validator에 임의의 폴더를 생성 합니다. 물론 기존 폴더에 xml만 추가해도 됩니다.
생성한 폴더에 임의의 xml 파일을 생성 합니다. 여기서는 다음과 같이 폴더와 파일을 생성 했습니다.
ValidateTest.xml 파일에 검사할 항목들을 추가 합니다.
<form-validation>
<formset> <form name="validatorTestVo"> <field property="id" depends="required"> <arg0 key="아이디" resource="true"/> </field> <field property="name" depends="required"> <arg0 key="이름" resource="true"/> </field> <field property="age" depends="required, integer"> <arg0 key="나이" resource="true"/> </field> </form> </formset> </form-validation> |
Controller 생성
web 패키지를 생성하고 Controller를 만듭니다.
@Controller public class ValidatorTestController {
@Autowired private DefaultBeanValidator beanValidator;
@RequestMapping("/validator/validatorTest.do") public String index(ModelMap model) { return "copycoding/validator/ValidatorTest"; }
@RequestMapping("/validator/formValidate.do") public@ResponseBody String selectGridSampleList(@ModelAttribute("validatorTestVo") ValidatorTestVo validatorTestVo, BindingResult bindingResult, ModelMap model) throws Exception {
beanValidator.validate(validatorTestVo, bindingResult); // validation 체크를 수행하여 검사
if (bindingResult.hasErrors()) { model.addAttribute("validatorTestVo", validatorTestVo); // validation 오류 발생한 경우 리턴 처리 return ""; }
return null; } } |
JSP 파일 생성
이제 마지막으로 화면을 위한 폴더와 파일을 생성 합니다.
상단에 validator용 lib를 추가 합니다.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <script type="text/javascript" src="<c:url value="/validator.do"/>"></script> <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> |
validator용 javascript도 추가를 해줍니다.
<validator:javascript formName="validatorTestVo" staticJavascript="false" xhtml="true" cdata="false"/>
<script type="text/javaScript" language="javascript"> function fncValidatorInsert() {
var varFrom = document.getElementById("validatorTestVo"); varFrom.action = "<c:url value='/validator/formValidate.do'/>";
if(confirm("저장 하나요?")){ if(!validateValidatorTestVo(varFrom)){ return; }else{ if(ipValidate()) varFrom.submit(); else return; } } } </script> |
validator용 form을 다음과 같이 작성 합니다.
<form:form commandName="validatorTestVo" method="post" action="${pageContext.request.contextPath}/validator/formValidate.do' />"> <table class="wTable"> <tr> <td><input id="id" name="id" type="text"></td> </tr> <tr> <td><input id="name" name="name" type="text"></td> </tr> <tr> <td><input id="age" name="age" type="text"></td> </tr> <tr> <td><input class="s_submit" type="submit" value="save" onclick="fncValidatorInsert(); return false;" /></td> </tr> </table> </form:form> |
테스트를 진행
먼저 아무것도 입력하지 않고 저장 버튼을 클릭 하는 경우
모두 필수 값이므로 입력을 하도록 메시지가 출력 됩니다.
모두 문자를 입력한 경우
age는 숫자 이므로 숫자 입력 메시지가 출력 됩니다.
좀더 상세한 설정이 필요하면 validator용 xml을 설정하면 됩니다.
- copy coding -
'Framework' 카테고리의 다른 글
전자정부프레임워크 ckeditor 웹에디터 적용 (0) | 2019.09.29 |
---|---|
전자정부프레임워크 단방향 암호화 (비밀번호 암호화) (0) | 2019.09.28 |
eclipse font 변경 (0) | 2019.09.12 |
전자정부프레임워크 ARIA 블록 알고리즘 암호화 복호화 (0) | 2019.09.07 |
전자정부프레임워크 파일 업로드 다운로드 (2) | 2019.09.01 |