`
yxwang0615
  • 浏览: 550735 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

struts2表单验证问题

    博客分类:
  • SSH
阅读更多

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的版本。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics