六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 37|回复: 0

struts2表单验证问题

[复制链接]

升级  23.67%

77

主题

77

主题

77

主题

举人

Rank: 3Rank: 3

积分
271
 楼主| 发表于 2013-1-29 10:53:45 | 显示全部楼层 |阅读模式
1.配置dwr.xml,固定写法:
 
<?xml version="1.0" encoding="UTF-8"?><!-- START SNIPPET: dwr --><!DOCTYPE dwr PUBLIC     "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"     "http://www.getahead.ltd.uk/dwr/dwr10.dtd"><dwr>    <allow>        <create creator="new" javascript="validator">            <param name="class" value="org.apache.struts2.validators.DWRValidator"/>        </create>        <convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport"/>    </allow>    <signatures>        <![CDATA[        import java.util.Map;        import org.apache.struts2.validators.DWRValidator;        DWRValidator.doPost(String, String, Map<String, String>);        ]]>    </signatures></dwr><!-- END SNIPPET: dwr -->    org.apache.struts2.validators.DWRValidator在 struts2-dwr-plugin-2.1.6.jar中,需要导入。
2.web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>Struts 2 AJAX Part 3</display-name>    <filter>        <filter-name>struts-cleanup</filter-name>        <filter-class>            org.apache.struts2.dispatcher.ActionContextCleanUp        </filter-class>    </filter>    <filter-mapping>        <filter-name>struts-cleanup</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping><filter>        <filter-name>struts2</filter-name>        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>struts2</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping> <!-- 开始DWR配置 -->    <servlet>        <servlet-name>dwr</servlet-name>        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>        <init-param>            <param-name>debug</param-name>            <param-value>true</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>dwr</servlet-name>        <url-pattern>/dwr/*</url-pattern>    </servlet-mapping>    <!-- 结束DWR配置 --><welcome-file-list><welcome-file>AjaxValidation.jsp</welcome-file></welcome-file-list></web-app> 
 注意包名,DWR在与spring整合时用的servlet-class是org.directwebremoting.spring.DwrSpringServlet。
通过以上配置,我们可以将DWRValidator中的方法暴露为Javascript可以调用的远程接口。
在正确完成以上步骤之后,我们发布运行一下应用程序,在浏览器地址栏中输入http://localhost:8080/struts2_DWR2_form_validate/dwr/访问dwr
4.Action类AjaxValidation:
package com.wyx.struts2formtest;import com.opensymphony.xwork2.ActionSupport;public class AjaxValidation extends ActionSupport{private static final long serialVersionUID = -7901311649275887920L;    private String name;    private String password;    private int age;        public int getAge() {        return age;    }        public void setAge(int age) {        this.age = age;    }        public String getName() {        return name;    }        public void setName(String name) {        this.name = name;    }        public String getPassword() {        return password;    }        public void setPassword(String password) {        this.password = password;    }        @Override    public String execute() {                return SUCCESS;    }} 
5.编写表单校验的配置代码,名字为AjaxValidation-validation.xml,放在与action同级目录下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators>    <validator type="regex">        <param name="fieldName">password</param>        <param name="expression">            <![CDATA[(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$]]>        </param>        <message>Password must be between 8 and 10 characters, contain at least one digit and one alphabetic character, and must not contain special characters</message>    </validator>        <field name="name">        <field-validator type="requiredstring">            <message>You must enter a name</message>        </field-validator>    </field>    <field name="age">        <field-validator type="int">            <param name="min">18</param>            <param name="max">127</param>            <message>Age must be between 18 and 127</message>        </field-validator>    </field></validators> 
6.jsp页面 AjaxValidation.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">    <head>        <title>Struts 2 AJAX - Validation</title>        <s:head theme="ajax" />    </head>    <body>        <h2>            AJAX Validation Using DWR        </h2>        <s:form method="post" validate="true" theme="ajax">            <s:textfield label="Name" name="name" />            <s:password label="Password" name="password" />            <s:textfield label="Age" name="age" />            <s:submit />        </s:form>    </body></html> 
注意事项:
(1)org.apache.jasper.JasperException: Template /template/ajax/head.ftl not found.
去掉 <s:head theme="ajax" />就不会报错,是因为它用到了struts2-dojo-plugin-2.1.x.jar包。
(2)dwr最好用1的版本。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表