Struts2 簡介(三)

1.輸入驗證

1.1 編程式方式:驗證規則寫到了代碼中,硬編碼,編程式的方式也分爲兩種:

(1)第一種是針對動作類中的所有方法進行驗證

動作類需要實現ActionSupport覆蓋validate

  @Override
    public void validate() {
        if ("".equals(stu.getUsername().trim())){
            addFieldError("stu.username","用戶名不能爲空!");
            //向map中添加錯誤
            //出現錯誤,默認會轉向result=input視圖
        }
        if ("".equals(stu.getPassword().trim())){
            addFieldError("stu.password","密碼不能空!");
        }
    }
    //方法內部: 編寫驗證規則, 不正確添加信息 addFieldError

(2)第二種是針對動作類中的部分方法進行驗證,這個也分爲兩種方式:
第一種:註解的方式

   @SkipValidation//這是個忽略
    public String findAll(){
        System.out.println("findAll");
        return null;
    }

第二種:只針對該方法進行驗證 (我這個動作類方法名爲regist,針對誰,就叫什麼名字)

    public void validateRegist() {
        if ("".equals(stu.getUsername().trim())){
            addFieldError("stu.username","用戶名你沒寫啊!");
            //向map中添加錯誤
            //出現錯誤,默認會轉向result=input視圖
        }
        if ("".equals(stu.getPassword().trim())){
            addFieldError("stu.password","密碼不能空!");
        }
    }
    //驗證功能都是由 validation 攔截器所處理的 回顯錯誤信息是由 workflow 攔截器處理的

1.2聲明式驗證:把驗證規則寫到配置文件,這樣更改非常方便。聲明式驗證也分爲兩種:
(1)針對動作類中的所有動作進行驗證

動作類是模型:在Action動作類的包中創建一個名字爲:動作類名-validation.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <!--要驗證的字段名-->
    <field name="stu.username">
        <!--驗證規則
        requiredstring:代表的是不是空字符串
        required:是不是 null
        -->
        <field-validator type="requiredstring">
            <message>你的用戶名不能爲空啊!</message>
        </field-validator>
    </field>
</validators>

(2)針對動作類中的部分方法進行驗證
在動作類Action包中創建: 動作類名-動作名-validation.xml 配置文件.
動作名是 struts.xml 中的 action name

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
        <validators>
    <field name="stu.username">
        <field-validator type="requiredstring">
            <message>你TM用戶名爲空!!!</message>
        </field-validator>
    </field>


    <validator type="regex">
        <param name="fieldName">stu.username</param>
        <param name="regexExpression">
            <!--正則表達式-->
            <![CDATA[
            [a-zA-Z]{3,8}

            ]]>

        </param>
        <message>你的名字必須有3-8個字母組成</message>

    </validator>
    <field name="stu.password">
    <field-validator type="regex">
        <param name="regexExpression">

            <![CDATA[
                \d{3,8}
                ]]>
        </param>
        <message>你的密碼需要3-8個數字組成</message>
    </field-validator>
</field>
    <field name="stu.gender">
        <field-validator type="required">
            <message>性別你TM倒是選一個啊!!!</message>
        </field-validator>
    </field>

    <field name="stu.email">
        <field-validator type="email">
            <message>郵箱都忘了????</message>
        </field-validator>
    </field>
    <field name="stu.grade">
        <field-validator type="int">
            <param name="min">0</param>
            <param name="max">150</param>
            <message>成績在0-150之間</message>
        </field-validator>


    </field>
    </validators>

這就是我起相對應名字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章