在做网页开发的时候,经常有这样的需求。就是用户在文本框中输入信息后,当焦点离开的时候,我们需要立刻对用户输入的信息进行有效性验证。那么,正常的情况下,要想实现这一功能,我们肯定是会用到ajax的,但是,如果你使用了DWZ,那么,要实现这一功能将不再那么繁琐。你不需要写任何ajax的代码,而仅仅需要在需要的验证的input标签上加入一个remote属性。下面给大家演示一个使用Dwz + Struts2 完成用户名验证的实例。
首先,看login.jsp页面代码
<%@page contentType="text/html; charset=utf-8"%>
<%@ include file="/page/common/common.jsp"%>
<div class="pageContent">
<form class="pageForm required-validate">
<div class="pageFormContent" layoutH="58">
<div class="unit">
<label>用户名:</label> <input type="text" id="userName" name="userName"
value="" size="30" class="required "
remote="" />
</div>
<div class="unit">
<label>密码:</label> <input type="text" name="password"
value="" size="30" class="required" />
</div>
</div>
</form>
</div>
<script defer>
if($("#userName").attr("remote") != "undefined"){
$("#userName").attr("remote","${contextPath }/user/validateUserAction.action?time="+ new Date().getTime());
}
</script>
解释一下,我为什么使用了最下面的javaScript代码。如果我直接直接把链接“${contextPath }/user/validateUserAction.action”写到input的remote属性中,那么会出现不提交的情况。我怀疑是缓存的事,不过没有去验证。当我在链接后面加上时间戳以后,这种情况就木有发生过。
Struts.XML 中代码
<?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="user" namespace="/user"
extends="struts-default">
<action name="validateUserAction" class="userAction" method="validateUser" >
<result name="validate_false">/page/validate_false.html</result>
<result name="validate_true">/page/validate_true.html</result>
</action>
</package>
</struts>
PS:validate_false.html中只有false一个单词,同样validate_true.html里也只有true一个单词。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<bean id="userAction" class="user.action.UserAction"
scope="prototype">
</bean>
</beans>
UserAction 代码
package user.action;
import common.tool.web.BaseAction;
public class UserAction extends BaseAction {
private String userName="";
private String password="";
public String validateUser()
{
if("admin".equals(userName) ){
return "validate_true";
}
return "validate_false";
}
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;
}
}
效果图:
到此为止,验证的基本功能就完成了,不过,这样做还是有一点点缺陷的,就是不能自定义提示信息,这点还有待于完善。现在我还没有找实现自定义提示的方法。如果碰巧看博客的你知道如何实现,希望留下实现的方法。在此,提前谢谢了。