struts中使用validator

 刚开始用validator,需要注意较多的细节,再稍微明白些后,建议看看struts-example。

为了抛砖引玉,写个例子:

一。在struts-config.xml中加入<plug-in/>:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
 </plug-in>

在插件的配置中是通过pathnames属性来指定Validator的配置文件的,对于多个配置文件需要用“,”分隔。

validator-rules.xml文件用来定义Validator的校验规则,validation.xml文件用来定义针对每个JavaBean进行哪种校验。

二。创建Action:

public class LoginAction extends Action {
 
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
  return mapping.findForward("success");
 }
}

这个例子中其实Action什么都没做(只有句转发),为了体验validator纠错的现象。

三。创建ActionForm

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;

/**
 * MyEclipse Struts
 * Creation date: 05-02-2007
 *
 * XDoclet definition:
 * @struts.form name="loginForm"
 */
public class LoginForm extends ValidatorForm {
 private String name;
 private String password;
 public void reset(ActionMapping mapping, HttpServletRequest request) {
  name = null;
  password = null;
 }
 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;
 }
}
                         不要重写validate方法。

四。配置struts-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.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="/form/login.jsp"
   name="loginForm"
   path="/login"
   scope="request"
   type="com.yourcompany.struts.action.LoginAction"
   validate="true" >
   <forward name="success" path="/form/success.jsp"></forward>
   </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>
 注意:

1。           一定要写validate="true",进行validator检测。

2。<action>元素中attribute属性用来指定ActionForm保存到指定上下文时所使用的属性名。下面部分会涉及到此属性。

五。配置validation.xml:

 <?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
 <formset>
  <form name="loginForm">
   <field property="name" depends="required">
   <arg0 key="prompt.name"/>
   </field>
   <field property="password" depends="required">
   <arg0 key="prompt.password"/>
   </field>
  </form>
 </formset>
</form-validation>

注意:

1。<form name="loginForm">中name属性其实对应着struts-config.xml中<action>的attribute属性,说白了attribute="lf"的话,那么<form name="lf">。如果struts-config.xml中<action>没attribute属性的话则attribute的值默认为name的值,此处就是<form name="loginForm">。

2。property="name"这个 “name”是跟LoginForm中 name私有成员相一致的。

depends="required" 强制某个域不能为空。

<arg0 key="prompt.name"/>中prompt.name是在ApplicationResources.properties中定义的(下一步定义)。

3。property="password"同上。

 

六。填写ApplicationResources.properties资源文件:

# Resources for parameter 'com.yourcompany.struts.ApplicationResources'
# Project P/myValidator
errors.header=<span class="error-header1">Errors:</span><br><span class="error-header2">You must correct the following error(s) before processing.</span><ul>
errors.footer=</ul>
errors.prefix=<li><span class="error-text">
errors.suffix=</span></li>

prompt.name=name
prompt.password=Password

prompt.test=test

# Standard error messages for validator framework checks
errors.required={0} is required.
errors.minlength={0} cannot be less than {1} characters.
errors.maxlength={0} cannot be greater than {2} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be an byte.
errors.short={0} must be an short.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.float={0} must be an float.
errors.double={0} must be an double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.

七。编写JSP( login.jsp):

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

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
 
 
  <body>
  <html:javascript dynamicJavascript="true"
    formName="loginForm"
    staticJavascript="false"/>


 <script language="Javascript1.1" src="staticJavascript.jsp"></script>
  <html:errors/>

 
 
 
    <html:form action="/login" method="post" focus="name,password"   οnsubmit="return validateMyFor(this);">
      <table border="0">
        <tr>
          <td>Login:</td>
          <td><html:text property="name" /></td>
        </tr>
        <tr>
          <td>Password:</td>
          <td><html:password property="password" /></td>
        </tr>
        <tr>
          <td colspan="2" align="center"><html:submit /></td>
        </tr>
      </table>
    </html:form>
  </body>
</html:html>

注意:

1。formName="loginForm" 中loginForm其实是struts-config.xml中对应的Action中attribute的值,如果没有attribute属性,则要跟name属性的值一致。

2。 focus="name,password" 是loginForm中元素的名称。

若有问题请跟帖。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值