在做网页开发的时候,经常有这样的需求。就是用户在文本框中输入信息后,当焦点离开的时候,我们需要立刻对用户输入的信息进行有效性验证。那么,正常的情况下,要想实现这一功能,我们肯定是会用到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; } }
效果图:
到此为止,验证的基本功能就完成了,不过,这样做还是有一点点缺陷的,就是不能自定义提示信息,这点还有待于完善。现在我还没有找实现自定义提示的方法。如果碰巧看博客的你知道如何实现,希望留下实现的方法。在此,提前谢谢了。