Everything is a contribution

走过Java的点点滴滴,与大家共勉~
随笔 - 21, 文章 - 0, 评论 - 10, 引用 - 0
数据加载中……

在struts中使用validator执行UI验证

在使用struts时,如果使用common validator进行页面数据的有效性验证时,可以减少很多代码量,通过配置文件就可以方便的进行数据的校验工作.

在做所有的配置前,先检查jsp页面是否有以下内容(没有请添加上):
<%-- Error Messages --%>
<logic:messagesPresent>
    <div class="error">
        <html:messages id="error">
            <c:out value="${error}"/><br/>
        </html:messages>
    </div>
</logic:messagesPresent>

<%-- Success Messages --%>
<logic:messagesPresent message="true">
    <div class="message">
        <html:messages id="message" message="true">
            <c:out value="${message}"/><br/>
        </html:messages>
    </div>
</logic:messagesPresent>

其中的css可以自己根据需要定义,上面使用JSTL标签.

使用validator需要进行如下配置:
1) 首先在struts-config.xml中添加:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>
</plug-in>

2) 配置validation.xml文件,内容如下:
<form-validation>
    <formset>
        <form name="loginForm">
            <field property="userid" depends="required">
                <arg0 key="login.user.id" />
            </field>
            <field property="password" depends="required">
                <arg0 key="login.password" />
            </field>
            <field property="repasswd" depends="required">
                <arg0 key="login.password.retry" />
            </field>
            <field property="username" depends="required">
                <arg0 key="login.username" />
            </field>
            <field property="sex" depends="required">
                <arg0 key="login.sex" />
            </field>
            <field property="college" depends="required">
                <arg0 key="login.college" />
            </field>
            <field property="department" depends="required">
                <arg0 key="login.department" />
            </field>
            <field property="idNumber" depends="required">
                <arg0 key="login.id.number" />
            </field>
            <field property="birthday" depends="required, date">
                <arg0 key="login.birthday" />
            </field>
            <field property="telephone" depends="required">
                <arg0 key="login.telephone" />
            </field>
            <field property="email" depends="required, email">
                <arg0 key="login.email" />
            </field>
        </form>
    </formset>
</form-validation>


3) 在struts中设置对应的action的validate值为true:
<action path="/login" name="loginForm" parameter="method" type="com.timeshonor.struts.action.LoginAction" validate="true" input="/login.jsp">
    <forward name="success" path="/success.jsp" />
</action>
如果使用的是动态Form,则在struts-config.xml中会有如下配置:
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
    <form-property name="userid" type="java.lang.String" />
    <form-property name="password" type="java.lang.String" />
    <form-property name="repasswd" type="java.lang.String" />
    <form-property name="username" type="java.lang.String" />
    <form-property name="sex" type="java.lang.String" />
    <form-property name="college" type="java.lang.String" />
    <form-property name="department" type="java.lang.String" />
    <form-property name="idNumber" type="java.lang.String" />
    <form-property name="birthday" type="java.lang.String" />
    <form-property name="telephone" type="java.lang.String" />
    <form-property name="email" type="java.lang.String" />
</form-bean>
注:validator插件不支持struts的ActionForm验证,只支持
DynaValidatorForm和ValidatorForm验证,如果不使用动态form可以让需要验证的Form类从ValidatorForm继承,不需要实现validate方法.

4) 执行完1、2、3步就可以执行UI服务器端验证,如果想配置前台javascript验证时,还需要做如下配置:
a) 修改对应的页面form
为如下内容:
<html:form action="/login" method="post" onsubmit="return validateLoginForm(this);">
b) 确保下面这一行内容在对应页面的form里:
<html:submit>提交</html:submit>
c) 在页面的form元素后面添加以下内容:
<html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="true" />

posted on 2007-11-26 10:45 Kevin Xia 阅读(499) 评论(0)  编辑  收藏 所属分类: Java开发


只有注册用户登录后才能发表评论。


网站导航: