關(guān)于Struts2中visitor校驗器的解決方法

字號:

這段時間重新開始拾起JAVA的學(xué)習(xí),也是為了以后的工作打算,積累一些經(jīng)驗。
    記得開始的時候,學(xué)習(xí)Struts2中的輸入校驗,就對Vistor校驗器情有獨鐘。首先,一般我們在提交表單的時候,對表單的各字段就要有校驗的過程,實際部署過程中要分 客戶端校驗 和服務(wù)器端校驗。 客戶端校驗使用rapid validation等第三方客戶端校驗框架就可以實現(xiàn),而且比Struts2本身自帶的客戶端校驗方式更好,但服務(wù)器端校驗卻可以分為好幾種:
    1.如果在Action中只有一個處理邏輯的話,可以重寫ActionSupport中的validate()方法。
    2.如果在Action中存在多個類似于execute的處理邏輯的話,我們可以重寫validateXxx()方法(Xxx為不同的處理邏輯名稱,例如有validateRegist()方法,就是處理Regist業(yè)務(wù)邏輯)
    3.編寫對應(yīng)于Action的validate 的xml文件。這個應(yīng)該是最為常用的一種解決方案了,但是有一個問題,Action眾多,或者在Action中有多個對應(yīng)一個或多個POJO的處理邏輯,那么這些xml文件就會隨著Action文件和處理邏輯的增加而相應(yīng)的增加,這顯然不是個好的現(xiàn)象。 所以如果只是針對POJO來寫相應(yīng)的validate xml文件,無疑會好很多。 這就是Visitor校驗器的功用了。
    很多初學(xué)者可能手邊都有一般李剛寫的 《Struts 2 權(quán)威指南》,里面正好講了visitor校驗器,但是照著書上講的步驟重復(fù)做了N次都沒有正確,于是乎在網(wǎng)上搜索了相關(guān)的文章,最后終于發(fā)現(xiàn)書上沒有講完整 (P280-P281)
    以下我來舉個例子:
    考試大建立了一個User的POJO,處理邏輯為UserAction, 測試頁面為login.jsp
    login.jsp
    1 <%@ page language="java" pageEncoding="UTF-8"%>
    2 <%@ taglib prefix="s" uri="/struts-tags"%>
    3     4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    5
    6
    7
    8 用戶登錄頁面
    9
    10

    11
    12

    13