Struts:Validator验证框架详解(三)

三、最后,讲一下启用客户端验证的方法。

 

    启用客户端验证,表单无法通过时浏览器会弹出对话框并显示错误消息。

首先,需要再jsp页面上加入:<html:javascript formName= ”loginForm” /> 这样一条语句,其中formName属性的值是我们要验证的form表单的名字,这里我要验证loginForm表单。这条语句应该夹在<body>标签外面,通常是放在<head/><body>之间。然后,还需要给我们的表单添加验证方法:<html:form action=”/login” οnsubmit=”return validateLoginForm(this);” />,如果你对validateLoginForm(注意这里的方法命会随着要验证的表单的不同而改变的)方法的具体内容感兴趣,可以用浏览器查看页面源代码来找到。这样这样一来,我们就启用了验证框架的客户端验证功能,表单如果没有通过客户端验证是无法提交到后台的。客户端验证的运行结果如下:

注意,弹出的对话框中有两条消息,第一条是关于name文本框的,第二条是关于password文本框的。

另外,还有一个要注意的地方是我们的信息中username是在validation.xml文件中设置的,我原本写的是user’s name,但是在运行客户端验证的时候,js会报告异常,因为消息中的单引号 使得客户端的javascript代码运行时出现了问题,所以请尽量避免在消息中使用有特殊意义的符号。

四、消息中文化

首先我们需要建立一个包含中文消息的文件,比如a.txt,然后在这个文件里面按照ApplicationResources.properties的样式书写中文消息,如:errors.required={0} is required.等等,然后在这个文件所在目录中,用cmd命令进行文件编码转化,密令如下:native2acsii -encoding gb2312 a.txt ApplicationResources_zh_CN.propertyies。

注意这里的ApplicationResources_zh_CN.propertyies就是我们需要的中文资源文件,你可以打开看一下内容,是用unicode来表示中文的。这个本地资源文件我们需要把他和我们之前的资源文件ApplicationResources.propertyies放到一起。

最后需要在jsp页面文件中作出修改:<html:html local="true"> ... </html:html>来启用本地资源文件,这样就可以使用本地资源文件(即ApplicationResources_zh_CN.properties)中的中文消息了。

好了,就说道这里吧,如果我还有什么讲得不清楚的地方,可以发消息给我或者QQ联系:30438772。

 

    最后附上我的代码:

代码:

login.jsp-------------------------------------------------------------

<%@ page language="java" pageEncoding="ISO-8859-1"%>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

 

<html:html local="true">

   <head>

      <title>JSP for LoginForm form</title>

   </head>

   <html:javascript formName=”/loginForm” />

   <body>

      <html:errors/>

      <html:form action="/login" οnsubmit=”return validateLoginForm(this);”>

        name : <html:text property="name"/><html:errors property="name" /><br/>

        password : <html:text property="password"/><html:errors property="password"/><br/>

        <html:submit/><html:cancel/>

      </html:form>

   </body>

</html:html>

-----------------------------------------------------------------------

LoginForm.java----------------------------------------------------

 

package com.yourcompany.struts.form;

 

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.validator.ValidatorForm;

 

public class LoginForm extends ValidatorForm {

    private String password;

    private String name;

    public String getPassword() {

        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

------------------------------------------------------------------

LoginAction.java--------------------------------------------------------

 

package com.yourcompany.struts.action;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.yourcompany.struts.form.LoginForm;

 

public class LoginAction extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response) {

        System.out.println("come in the LoginAction.class");

        LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

        String name = loginForm.getName();

        String password = loginForm.getPassword();

        ActionForward actionForward = null;

        if (name.equals("jianghe") &&  password.equals("123456")) {

            System.out.println("success");

            actionForward = mapping.findForward("success");

        } else {

            System.out.println("fail");

            actionForward = mapping.findForward("fail");

        }

        return actionForward;

    }

}

-------------------------------------------------------------------------

validation.xml-----------------------------------------------------------------------

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

<!DOCTYPE form-validation

  PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"

  "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"

>  

<form-validation>

<global>

  <constant>

    <constant-name>conName</constant-name>

    <constant-value>conValue</constant-value>

  </constant> 

</global>

<formset>

  <form name="loginForm">

    <field property="name" depends="required,minlength">

      <msg name="required" key="myRequired" />

      <msg name="minlength" key="myMinlength" />

      <arg0 key="${var:myArg}" resource="false"/>

      <arg1 name="minlength" key="${var:minlength}" resource="false"/>     

      <var>

        <var-name>myArg</var-name>

        <var-value>username</var-value>

      </var>

      <var>

        <var-name>minlength</var-name>

        <var-value>3</var-value>

      </var>

    </field>

    <field property="password" depends="required">

    </field>

  </form>

</formset>

</form-validation>

-----------------------------------------------------------------------

struts-config.xml-----------------------------------------------------------------------

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

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

 

<struts-config>

  <data-sources />

  <form-beans >

    <form-bean name="loginForm" type="com.yourcompany.struts.form.LoginForm" />

 

  </form-beans>

 

  <global-exceptions />

  <global-forwards />

  <action-mappings >

    <action

      attribute="loginForm"

      input="/login.jsp"

      name="loginForm"     

      path="/login"

      scope="request"

      validate="true"

      type="com.yourcompany.struts.action.LoginAction">

      <forward name="success" path="/success.jsp" />

      <forward name="fail" path="/login.jsp" />

    </action>

 

  </action-mappings>

 

  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">

    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/>

  </plug-in>

</struts-config>

-----------------------------------------------------------------------

ApplicationResources.properties-----------------------------------

 

# Resources for parameter 'com.yourcompany.struts.ApplicationResources'

# Project practiceStruts

 

errors.required = {0} is required;

errors.minlength = {0} can not be less than {1} characters.

 

myRequired = myMsg: {0} is required;

myMinlength = myMsg: {0} can not be less than {1} characters.

 

myArg = myArgument

 

------------------------------------------------------------------

 

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值