在做網頁開發的時候,經常有這樣的需求。就是使用者在文字框中輸入資訊後,當焦點離開的時候,我們需要立刻對使用者輸入的資訊進行有效性驗證。那麼,正常的情況下,要想實現這一功能,我們肯定是會用到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一個單詞。
配置action的代碼
<?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;}}
:
到此為止,驗證的準系統就完成了,不過,這樣做還是有一點點缺陷的,就是不能自訂提示資訊,這點還有待於完善。現在我還沒有找實現自訂提示的方法。如果碰巧看部落格的你知道如何?,希望留下實現的方法。在此,提前謝謝了。