Validation 프레임 워 크 를 사용 하여 데 이 터 를 검증 합 니 다.

다음으로 전송:
http://www.itpub.net/viewthread.php?tid=975359
    본 고 는 vaidation 프레임 워 크 로 struts 폼 을 검증 하 는 방법 을 상세 하 게 소개 하 였 으 며 참고 할 수 있 습 니 다.
인용 하 다.
'Struts 2 튜 토리 얼 4: vaidate 방법 으로 데 이 터 를 검증 합 니 다' 에 서 는 클 라 이언 트 가 제출 한 데 이 터 를 검증 하기 위해 vaidate 방법 을 사용 하지만 vaidate 방법 을 사용 하면 인증 코드 와 정상 적 인 논리 코드 를 혼합 하지만 코드 유지 에 불리 하고 일부 코드 를 다른 프로그램의 검증 에 사용 하기 도 어렵 습 니 다.Struts 2 에서 Validation 프레임 워 크 를 제공 합 니 다. 이 프레임 워 크 는 Struts 1. x 가 제공 하 는 Validation 프레임 워 크 와 유사 하 며 XML 파일 을 통 해 설정 합 니 다.
1. 서버 인증
다음은 Struts 2 의 vaidation 프레임 워 크 를 사용 하여 서버 인증 을 하 는 방법 을 보 여 줍 니 다.우 리 는 다음 과 같은 몇 단계 에 따라 이 프로그램 을 작성 할 수 있다.
[1 단계] 액 션 클래스 만 들 기 (NewValidateAction. java)
package action;

import com.opensymphony.xwork2.ActionSupport;

public class NewValidateAction extends ActionSupport
{
        private String msg;  //     
        private int age;   //  13 20  
        public String getMsg()
        {
                return msg;
        }
        public void setMsg(String msg)
        {
                this.msg = msg;
        }
        public int getAge()
        {
                return age;
        }
        public void setAge(int age)
        {
                this.age = age;
        }
}

다음은 msg 와 age 속성 을 검증 합 니 다.
[2 단계] Action 클래스 를 설정 합 니 다. struts. xml 코드 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
        <package name="demo" extends="struts-default" namespace="/test">
                <action name="new_validate" class="action.NewValidateAction">
                        <result name="input">/validate_form.jsp</result>
                        <result name="success">/validate_form.jsp</result>
                </action>
        </package>
</struts>

[3 단계] 인증 규칙 프로필 작성
    이것 은 XML 기반 프로필 로 struts1. x 의 vaidator 프레임 워 크 의 인증 규칙 프로필 과 유사 합 니 다.그러나 일반적으로 검증 할. class 파일 과 같은 디 렉 터 리 에 놓 고 설정 파일 이름 은 다음 과 같은 두 규칙 중 하 나 를 사용 하여 명명 해 야 합 니 다.
1.        -validation.xml
2.        --validation.xml
그 중에서 < Action AliasName > 은 struts. xml 에서 < ation > 의 name 속성 값 입 니 다.이 예 에서 우 리 는 첫 번 째 명명 규칙 을 사용 하기 때문에 파일 이름 은 NewValidate Action - vaidation. xml 입 니 다.파일 의 내용 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
        <field name="msg">
                <field-validator type="requiredstring">
                        <message>     </message>
                </field-validator>
        </field>
        <field name="age">
                <field-validator type="int">
                        <param name="min">13</param>
                        <param name="max">20</param>
                        <message>
                                    13 20  
                        </message>
                </field-validator>
        </field>
</validators>

이 파일 은 두 가지 규칙 을 사 용 했 습 니 다: requiredstring (입력 해 야 합 니 다) 과 int (정형 범 위 를 확인 합 니 다).기타 더욱 상세 한 검증 규칙 에 대하 여 독자 가 방문 하 시기 바 랍 니 다.http://struts.apache.org/2.0.11.1/docs/validation.html살 펴 보 겠 습 니 다.
[4 단계] JSP 페이지 에 데 이 터 를 작성 하여 입력 합 니 다.
웹 루트 디 렉 터 리 에 vaidate 만 들 기form. jsp 파일, 코드 는 다음 과 같 습 니 다.
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<link rel="stylesheet" type="text/css" href="<s:url value="/styles/styles.css"/>">
<html>
  <head>
    <title>    </title>
  </head> 
  <body>
    <s:form action="new_validate" namespace="/test" >
        <s:textfield name="msg" label="  "  />
        <s:textfield name="age" label="  "/>
        <s:submit/>
    </s:form>
  </body> 
</html>

struts. xml 의 < package > 탭 에 namespace 속성 을 지정 하려 면 < s: form > 에서 도 namespace 와 action 을 분리 해서 써 야 합 니 다. 위 코드 와 같 습 니 다.연결 할 수 없습니다. Struts 2 는 액 션 과 namespace 를 분리 해 야 합 니 다.다음 코드 가 잘못 되 었 습 니 다:

<s:form action="/test/new_validate" >
   ... ...
</s:form>

위의 프로그램 에 서 는 잘못된 정 보 를 만 드 는 스타일 도 styles. css 를 사용 했다.코드 는 다음 과 같 습 니 다:

.label {font-style:italic; }
.errorLabel {font-style:italic;  color:red; }
.errorMessage {font-weight:bold; color:red; }

    웹 루트 디 렉 터 리 에 styles 디 렉 터 리 를 만 들 고 styles. css 를  
웹 프로젝트 의 컨 텍스트 경로 가 vaidation 이 라 고 가정 하면 다음 URL 로 프로그램 을 테스트 할 수 있 습 니 다.
    http://localhost:8080/validation/validate_form.jsp
    결 과 를 그림 1 과 같이 표시 합 니 다.
2. 클 라 이언 트 검증
Struts 2 에서 클 라 이언 트 인증 을 실현 하 는 것 은 매우 간단 합 니 다. < s: form > 에 vaidate 속성 을 추가 하면 값 은 true 입 니 다.예 를 들 어 < s: form validate = "true"... < / form > 을 사용 하면 됩 니 다.
3. 내장 속성 검증
    특수 한 속성 이 있 습 니 다. 즉, 이 속성의 유형 은 다른 자바 빈 입 니 다. 만약 에 User 류 가 있 으 면 코드 는 다음 과 같 습 니 다.
package data;

public class User
{
    private String name;
    private int age;
        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;
        }
}

    NewValidateAction 클래스 에 user 속성 을 추가 합 니 다. 코드 는 다음 과 같 습 니 다.
package action;

import com.opensymphony.xwork2.ActionSupport;
import data.User;

public class NewValidateAction extends ActionSupport
{
        private String msg;
        private int age;
        private User user;
        public String getMsg()
        {
                return msg;
        }

        public void setMsg(String msg)
        {
                this.msg = msg;
        }
        public int getAge()
        {
                return age;
        }
        public void setAge(int age)
        {
                this.age = age;
        }
        public User getUser()
        {
                return user;
        }
       
        public void setUser(User user)
        {
                this.user = user;
        }
}

NewValidateAction 의 user 속성 을 검증 하려 면 visitor 검증 기 를 사용 할 수 있 습 니 다.조작 과정 은 다음 과 같다.
먼저 NewValidate Action - vaidation. xml 에 < field > 탭 을 추가 합 니 다. 코드 는 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
    ... ...
        <field name="user">
        <field-validator type="visitor">
                        <param name="context">abc</param>
                        <param name="appendPrefix">true</param>
                        <message>User:</message>
                </field-validator>
        </field>
</validators>

그 중에서 context 인 자 는 user 클래스 속성 을 검증 하 는 파일 이름 의 일부분 이 될 것 입 니 다. 예 를 들 어 user 속성 이 user 대상 에 게 되 돌아 오 면 user 대상 속성 을 검증 하 는 파일 이름 은 User - abc - vaidation. xml 입 니 다.이 파일 은 User. class 파일 과 같은 디 렉 터 리 에 있어 야 합 니 다.appendPrefix 는 필드 에 user 를 추가 할 지 여 부 를 표시 합 니 다. true 라면 Struts 2 는 user. name 을 사용 하여 form 에서 제출 한 데이터 에서 검증 할 데 이 터 를 찾 습 니 다.이 속성의 기본 값 은 true 입 니 다.오류 가 발생 하면 Struts 2 는 < message > 탭 의 정 보 를 User - abc - vaidation. xml 파일 의 해당 오류 정보 앞 에 추가 합 니 다.
User - abc - vaidation. xml 파일 의 내용 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
        <field name="name">
                <field-validator type="requiredstring">
                        <message>   name</message>
                </field-validator>
        </field>
        <field name="age">
                <field-validator type="int">
                        <param name="min">5</param>
                        <param name="max">20</param>
                        <message>
                                    5 20  
                        </message>
                </field-validator>
        </field>
</validators>

    다음은 vaidate 수정form. jsp, 코드 는 다음 과 같 습 니 다.
<s:form validate="true" action="new_validate" namespace="/test" >
     <s:textfield name="msg" label="  "  />
     <s:textfield name="age" label="  "/>
     <s:textfield name="user.name" label="  1"  />
     <s:textfield name="user.age" label="  1"/>
    <s:submit/>
</s:form>

마지막 두 개의 < s: textfield > 의 name 속성 은 user. name 과 user. age 입 니 다. 마침 접 두 사 를 붙 였 습 니 다.
지금 재 방문  http://localhost:8080/validation/validate_form. jsp, 검증 인터페이스 그림 2 참조.
    필자 의 테스트 를 통 해 visitor 를 사용 하면 클 라 이언 트 검증 방식 으로 user 속성 을 검증 할 수 없 지만 NewValidateAction 의 다른 속성 은 클 라 이언 트 테스트 를 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기