ajax表单验证问题?

tanlingyun 2009-09-29 07:03:26
我用dwr做ajax表单验证,所有验证都通过了,execute里的方法也可以执行,但就是不能返回success对应的页面,怎么回事?
...全文
397 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
itlf2008 2009-11-02
  • 打赏
  • 举报
回复
struts的<forword>没有配置
tanlingyun 2009-10-01
  • 打赏
  • 举报
回复
真是郁闷了,难道就没有会的?
tanlingyun 2009-10-01
  • 打赏
  • 举报
回复
麻烦在帮忙看一下
tanlingyun 2009-10-01
  • 打赏
  • 举报
回复
我的步骤是这样的:
1、在web.xml中配置dwr servlet

<servlet>
<servlet-name>dwr-invoker</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-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

2.新增dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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 match="com.opensymphony.xwork2.ValidationAwareSupport" converter="bean"></convert>
</allow>
<signatures>
<![CDATA[
import java.util.Map;
import org.apache.struts2.validators.DWRValidator;
DWRValidator.doPost(String, String, Map<String, String>);
]]>
</signatures>
</dwr>

3.新建register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>register</title>
<!-- 下面这条语句不能删,删了就不显示红色警告了 -->
<s:head theme="ajax"/>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<center>
<h2>注册表单</h2>
<s:form action="register" validate="true" theme="ajax">
<s:textfield name="username" label="用户名"></s:textfield>
<s:password name="password" label="密码"></s:password>
<s:password name="repassword" label="确认密码"></s:password>
<s:textfield name="age" label="年龄"></s:textfield>
<s:textfield name="birth" label="出生日期"></s:textfield>
<s:textfield name="email" label="邮箱地址"></s:textfield>
<s:submit value="注册"></s:submit>
</s:form>
</center>
</body>
</html>

4.新建RegisterAction.java
package com.lingyun.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterAction extends ActionSupport{
private String username;
private String password;
private String repassword;
private int age;
private Date birth;
private String email;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRepassword() {
return repassword;
}
public void setRepassword(String repassword) {
this.repassword = repassword;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String execute()throws Exception{
System.out.println("执行execute方法");
return SUCCESS;
}
}

5.在struts.xml中配置action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="struts2" extends="json-default">
<action name="validateName" class="com.lingyun.action.ValidateNameAction">
<result type="json"></result>
</action>
<action name="register" class="com.lingyun.action.RegisterAction">
<result name="success">/result.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>

6.校验规则文件RegisterAction-validation.xml
<?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>
<field name="username">
<field-validator type="requiredstring">
<!-- 可以不必加上trim因为默认就为true了 -->
<message>必须输入用户名</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>用户名长度必须为6至20之间</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>密码长度必须为6至20之间</message>
</field-validator>
</field>
<field name="repassword">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入确认密码</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[(\w{6,20})]]></param>
<message>确认密码长度必须为6至20之间</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[(password==repassword)]]></param>
<message>密码和确认密码必须一致</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">120</param>
<message>别开玩笑了,输入正常点的年龄</message>
</field-validator>
</field>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2010-01-01</param>
<message>你是远古时代的还是若干年以后才出生的?</message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message>请输入有效的电子邮箱地址</message>
</field-validator>
</field>
</validators>

7.用到的jar包都添加了
8.运行的时候ajax校验起作用,但是最后全部检验成功后提交页面不跳转.
折腾的生活 2009-09-30
  • 打赏
  • 举报
回复
楼主说的是forward方法吧,这个可以执行跳转!
getServletContext().getRequestDispatcher(url).forward(request, response);
lytcd 2009-09-30
  • 打赏
  • 举报
回复
dwr验证完以后,不应该跳转页面,应该返给回调函数。
像这一个:
<action name="test" class="com.isoftstone.action.LoginAction" method="testPass">
<result type="json"></result>
BearKin 2009-09-30
  • 打赏
  • 举报
回复
ajax访问的ACTION还能跳到一个页面?
tanlingyun 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zuoguodang 的回复:]
你返回的信息是什么格式的,是json吗?像这样的{flag:'1',msg:'成功'}
[/Quote]
不是的,就返回一个"success",然后想让页面跳转到success对应的页面,但不知为什么它不执行这个跳转
zuoguodang 2009-09-29
  • 打赏
  • 举报
回复
你返回的信息是什么格式的,是json吗?像这样的{flag:'1',msg:'成功'}
1,编写页面 2,查询数据库名字, 3,配置文件 4,页面判断效果展示:在不输入信息或者错误信息时光标移开直接提示 重置将所有提示清楚1,编写页面

请注册

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧