﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Vincent-随笔分类-Webwork</title><link>http://www.blogjava.net/lijiajia418/category/14735.html</link><description>Vicent's blog</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:25:19 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:25:19 GMT</pubDate><ttl>60</ttl><item><title>WebWork教程－ServletDispatcher</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67077.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67077.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67077.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67077.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ServletDispatcher																										原理																										ServletDispatcher				是默认的处理				Web Http				请求的调度器，它是一个				JavaServlet				，是				WebWork				框架的控制器。...&nbsp;&nbsp;<a href='http://www.blogjava.net/lijiajia418/archive/2006/09/01/67077.html'>阅读全文</a><img src ="http://www.blogjava.net/lijiajia418/aggbug/67077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:41 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork教程－validator</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67076.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67076.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67076.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67076.html</trackback:ping><description><![CDATA[
		<div style="MARGIN: 13pt 0cm">
				<strong>
						<font size="5">
								<span style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">验证框架</span>
						</font>
				</strong>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">WebWork</span>
				<span style="FONT-SIZE: 9pt">提供了在</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">执行之前，对输入数据的验证功能，它使用了其核心</span>
				<span style="FONT-SIZE: 9pt">XWork</span>
				<span style="FONT-SIZE: 9pt">的验证框架。提供了如下功能：</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<span style="FONT-SIZE: 9pt">1、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				<span style="FONT-SIZE: 9pt">可配置的验证文件。它的验证文件是一个独立的</span>
				<span style="FONT-SIZE: 9pt">XML</span>
				<span style="FONT-SIZE: 9pt">配置文件，对验证的添加、修改只需更改配置文件，无需编译任何的</span>
				<span style="FONT-SIZE: 9pt">Class</span>
				<span style="FONT-SIZE: 9pt">。</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<span style="FONT-SIZE: 9pt">2、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				<span style="FONT-SIZE: 9pt">验证文件和被验证的对象完全解藕。验证对象是普通的</span>
				<span style="FONT-SIZE: 9pt">JavaBean</span>
				<span style="FONT-SIZE: 9pt">就可以了（可以是</span>
				<span style="FONT-SIZE: 9pt">FormBean</span>
				<span style="FONT-SIZE: 9pt">、域对象等），它们不需实现任何额外的方法或继承额外的类。</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<span style="FONT-SIZE: 9pt">3、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				<span style="FONT-SIZE: 9pt">多种不同的验证方式。因为它验证功能是可以继承的，所以可以用多种不同的方式指定验证文件，比如：通过父类的</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">、通过</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">、通过</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的方法、通过</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">所使用的对象，等等。</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<span style="FONT-SIZE: 9pt">4、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				<span style="FONT-SIZE: 9pt">强大的表达式验证。它使用了</span>
				<span style="FONT-SIZE: 9pt">OGNL</span>
				<span style="FONT-SIZE: 9pt">的表达式语言，提供强大的表达式验证功能。</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<span style="FONT-SIZE: 9pt">5、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				<span style="FONT-SIZE: 9pt">同时支持服务器端和客户端验证。</span>
		</div>
		<div style="MARGIN: 13pt 0cm">
				<strong>
						<font size="4">
								<a name="_Toc76287482">
										<span style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">为用户注册添加验证功能</span>
								</a>
						</font>
				</strong>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">下面我们来看看如何为用户注册添加验证功能：</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<strong>
						<span style="FONT-SIZE: 9pt">1、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">注册我们的验证类型</span>
				</strong>
		</div>
		<div style="TEXT-INDENT: 22.5pt">
				<span style="FONT-SIZE: 9pt">WebWork</span>
				<span style="FONT-SIZE: 9pt">为不同的验证要求提供不同的验证类型。一个验证类型，一般是有一个类来提供。这个类必须实现接口：</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">com.opensymphony.xwork.validator.Validator</span>
				<span style="FONT-SIZE: 9pt">，但我们在写自己的验证类型时，无需直接实现</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">Validator</span>
				<span style="FONT-SIZE: 9pt">接口，它有抽象类可供直接使用如</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ValidatorSupport</span>
				<span style="FONT-SIZE: 9pt">、</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">FieldValidatorSupport</span>
				<span style="FONT-SIZE: 9pt">等。</span>
		</div>
		<div style="TEXT-INDENT: 22.5pt">
				<span style="FONT-SIZE: 9pt">验证类型在使用之前，必须要在</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ValidatorFactory</span>
				<span style="FONT-SIZE: 9pt">（</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">com.opensymphony.xwork.validator</span>
				<span style="FONT-SIZE: 9pt">.<span style="BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> ValidatorFactory</span></span>
				<span style="FONT-SIZE: 9pt">）中</span>
				<span style="FONT-SIZE: 9pt">注册。可以有二种方法实现验证类型的注册。一、写程序代码进行注册，它使用</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ValidatorFactory</span>
				<span style="FONT-SIZE: 9pt">类的静态方法：</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">registerValidator(String name, String className)</span>
				<span style="FONT-SIZE: 9pt">。</span>
				<span style="FONT-SIZE: 9pt">二、使用配置文件</span>
				<span style="FONT-SIZE: 9pt">validators.xml</span>
				<span style="FONT-SIZE: 9pt">进行注册，要求把文件</span>
				<span style="FONT-SIZE: 9pt">validators.xml</span>
				<span style="FONT-SIZE: 9pt">放到</span>
				<span style="FONT-SIZE: 9pt">ClassPath</span>
				<span style="FONT-SIZE: 9pt">的跟目录中（</span>
				<span style="FONT-SIZE: 9pt">/WEB-INF/classes</span>
				<span style="FONT-SIZE: 9pt">）。但在实际开发中，一般都使用第二中注册方法。我们的验证类型注册如下：</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;validators&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;validator name="stringlength" class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/&gt;</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/validators&gt;</span>
		</div>
		<div style="TEXT-INDENT: 18pt">
				<span style="FONT-SIZE: 9pt">注册验证类型的配置文件非常简单。它使用标签</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;validator</span>
				<span style="FONT-SIZE: 9pt">&gt;</span>
				<span style="FONT-SIZE: 9pt">提供名－值对的形式注册。这样我们的验证文件就可以直接引用它的名字。</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<strong>
						<span style="FONT-SIZE: 9pt">2、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">开启</span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">Action</span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">的验证功能</span>
				</strong>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt"> </span>
				<span style="FONT-SIZE: 9pt">如果</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">要使用验证框架的验证功能，它必须在配置文件中指定拦截器“</span>
				<span style="FONT-SIZE: 9pt">validation</span>
				<span style="FONT-SIZE: 9pt">”，它的定义如下：</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">&lt;interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/&gt;</span>
				<span style="FONT-SIZE: 9pt">。</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">我们的验证文件必须以</span>
				<span style="FONT-SIZE: 9pt">ActionName-validation.xml</span>
				<span style="FONT-SIZE: 9pt">格式命名，它必须被放置到与这个</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">相同的包中。你也可以为这个</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">通过别名的方式指定验证文件，它的命名格式为：</span>
				<span style="FONT-SIZE: 9pt">ActionName-aliasname-validation.xml</span>
				<span style="FONT-SIZE: 9pt">。“</span>
				<span style="FONT-SIZE: 9pt">ActionName </span>
				<span style="FONT-SIZE: 9pt">”是我们</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的类名；“</span>
				<span style="FONT-SIZE: 9pt">aliasname</span>
				<span style="FONT-SIZE: 9pt">”是我们在配置文件（</span>
				<span style="FONT-SIZE: 9pt">xwork.xml</span>
				<span style="FONT-SIZE: 9pt">）中定义这个</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">所用到的名称。这样，同一个</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">类，在配置文件中的不同定义就可以对应不同的验证文件。验证框架也会根据</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的继承结构去查找</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的父类验证文件，如果找到它会去执行这个父类的验证。</span>
		</div>
		<div> </div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<strong>
						<span style="FONT-SIZE: 9pt">3、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">实现我们的验证文件：</span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">RegisterActionSupport-validation.xml</span>
				</strong>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;validators&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field name="user.username"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field-validator type="requiredstring"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;message&gt;You must enter a value for username.&lt;/message&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/field-validator&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;/field&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field name="user.password"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field-validator type="requiredstring"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;message&gt;You must enter a value for password.&lt;/message&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/field-validator&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;field-validator type="fieldexpression"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;param name="expression"&gt;user.password == verifyPassword&lt;/param&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;message&gt;Passwords don't match.&lt;/message&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/field-validator&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;/field&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field name="user.email"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field-validator type="email"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;message&gt;You must enter a valid email.&lt;/message&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/field-validator&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;/field&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field name="user.age"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;field-validator type="int"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;param name="min"&gt;6&lt;/param&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;param name="max"&gt;100&lt;/param&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;message&gt;Age must be between ${min} and ${max}, current value is ${user.age}.&lt;/message&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/field-validator&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;/field&gt;</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/validators&gt;</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">说明：</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">1</span>
				<span style="FONT-SIZE: 9pt">）、</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;field</span>
				<span style="FONT-SIZE: 9pt">&gt;</span>
				<span style="FONT-SIZE: 9pt">标签代表一个字段，它的属性“</span>
				<span style="FONT-SIZE: 9pt">name</span>
				<span style="FONT-SIZE: 9pt">”和页面输入框的“</span>
				<span style="FONT-SIZE: 9pt">name</span>
				<span style="FONT-SIZE: 9pt">”属性必需完全一致，其实它也就是我们的表达式语言。</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">2</span>
				<span style="FONT-SIZE: 9pt">）、</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;field-validator</span>
				<span style="FONT-SIZE: 9pt">&gt;</span>
				<span style="FONT-SIZE: 9pt">标签定义我们的验证规则，</span>
				<span style="FONT-SIZE: 9pt">type</span>
				<span style="FONT-SIZE: 9pt">属性的值就是就是我们前面定义的验证类型。</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">3</span>
				<span style="FONT-SIZE: 9pt">）、验证文件中，字段的数据是通过表达式语言从我们的值堆栈（</span>
				<span style="FONT-SIZE: 9pt">OgnlValueStack</span>
				<span style="FONT-SIZE: 9pt">）中取得，一般是</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">或</span>
				<span style="FONT-SIZE: 9pt">Model</span>
				<span style="FONT-SIZE: 9pt">对象。例如：我们的字段“</span>
				<span style="FONT-SIZE: 9pt">user.age</span>
				<span style="FONT-SIZE: 9pt">”，它会通过</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的</span>
				<span style="FONT-SIZE: 9pt">getUser().getAge()</span>
				<span style="FONT-SIZE: 9pt">来取得用户输入的年龄，再来根据验证的类型“</span>
				<span style="FONT-SIZE: 9pt">int</span>
				<span style="FONT-SIZE: 9pt">”和最大值最小值的参数来判断输入的数据是否能通过验证。</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">4</span>
				<span style="FONT-SIZE: 9pt">）、不管验证是否通过，我们的</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">都会执行，但如果验证没有通过，它不会调用</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">execute()</span>
				<span style="FONT-SIZE: 9pt">方法。</span>
		</div>
		<div> </div>
		<div style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt">
				<strong>
						<span style="FONT-SIZE: 9pt">4、<span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   </span></span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">显示</span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">Action</span>
				</strong>
				<strong>
						<span style="FONT-SIZE: 9pt">的验证错误信息</span>
				</strong>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">如果用户输入的数据验证没有通过，我们需重新返回输入页面，并给出错误信息提示。拦截器栈“</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">validationWorkflowStack</span>
				<span style="FONT-SIZE: 9pt">”为我们实现了这个功能。它首先验证用户输入的数据，如果验证没有通过将不执行我们</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">的</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">execute()</span>
				<span style="FONT-SIZE: 9pt">方法，而是将请求重新返回到输入页面。</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">我们的</span>
				<span style="FONT-SIZE: 9pt">xwork.xml</span>
				<span style="FONT-SIZE: 9pt">配置文件如下：</span>
		</div>
		<div style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt" align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;action name="registerSupport" class="example.register.RegisterActionSupport"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;result name="success" type="dispatcher"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">                &lt;param name="location"&gt;/register-result.jsp&lt;/param&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;/result&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;<font color="#ff0000">result name="input" type="dispatcher"&gt;</font></span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
						<font color="#ff0000">                &lt;param name="location"&gt;/registerSupport.jsp&lt;/param&gt;</font>
				</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
						<font color="#ff0000">            &lt;/result&gt;</font>
				</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;interceptor-ref name="validationWorkflowStack"/&gt;</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        &lt;/action&gt;</span>
		</div>
		<div> </div>
		<div>
				<span style="FONT-SIZE: 9pt">通过接口</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ValidationAware</span>
				<span style="FONT-SIZE: 9pt">，</span>
				<span style="FONT-SIZE: 9pt">我们可以获得类级别或字段级别的验证错误信息，这个错误信息也就是我们验证文件中</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;message&gt;</span>
				<span style="FONT-SIZE: 9pt">标签里的数据。</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ActionSupport</span>
				<span style="FONT-SIZE: 9pt">类已实现了此接口，这样在应用中我们的</span>
				<span style="FONT-SIZE: 9pt">Action</span>
				<span style="FONT-SIZE: 9pt">只要继承</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">ActionSupport</span>
				<span style="FONT-SIZE: 9pt">类就可以了。</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">RegisterActionSupport</span>
				<span style="FONT-SIZE: 9pt">.java</span>
				<span style="FONT-SIZE: 9pt">代码如下：</span>
		</div>
		<div align="left">
				<strong>
						<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">package</span>
				</strong>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> example.register;</span>
		</div>
		<div align="left"> </div>
		<div align="left">
				<strong>
						<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">import</span>
				</strong>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial"> com.opensymphony.xwork.ActionSupport;</span>
		</div>
		<div align="left"> </div>
		<div align="left">
				<div align="left">
						<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
						</span>
				</div>
				<strong>
						<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">public</span>
				</strong>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">
						<strong>class</strong> RegisterActionSupport <strong>extends</strong> ActionSupport {</span>
		</div>
		<div align="left"> </div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>private</strong> User user= <strong>new</strong> User();</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>private</strong> String verifyPassword;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    </span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>public</strong> User getUser(){</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        <strong>return</strong><strong>this</strong>.user;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    }</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    </span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>public</strong> String execute(){</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        //</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">在这里调用用户注册的业务逻辑，比如：将注册信息存储到数据库</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        <strong>return</strong> SUCCESS;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    }</span>
		</div>
		<div align="left"> </div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>public</strong> String getVerifyPassword(){</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        <strong>return</strong><strong>this</strong>.verifyPassword;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    }</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    </span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    <strong>public</strong><strong>void</strong> setVerifyPassword(String verPassword){</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">        <strong>this</strong>.verifyPassword = verPassword;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    }</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">}</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">我们</span>
				<span style="FONT-SIZE: 9pt">WebWork</span>
				<span style="FONT-SIZE: 9pt">的</span>
				<span style="FONT-SIZE: 9pt">UI</span>
				<span style="FONT-SIZE: 9pt">标签库直接提供了验证错误信息显示功能。如果字段级别的验证没有通过，它会在输入框上方显示验证文件定义的错误提示信息。我们将用户输入的页面更改如下：</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt">registerSupport.jsp</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;%@ taglib uri="webwork" prefix="ww" %&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;html&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;head&gt;&lt;title&gt;Register Example&lt;/title&gt;&lt;/head&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;body&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;table border=0 width=97%&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;tr&gt;&lt;td align="left"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">    &lt;ww:form name="'test'" action="'/example/registerSupport.action'" method="'POST'"&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:textfield label="'Username'" name="'user.username'" required="true"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:textfield label="'Password'" name="'user.password'" required="true"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:textfield label="'VerifyPassword'" name="'verifyPassword'" required="true"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:textfield label="'Email'" name="'user.email'" required="true"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:textfield label="'Age'" name="'user.age'" required="true"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">            &lt;ww:submit value="'Submit'"/&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">         &lt;/ww:form&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/td&gt;&lt;/tr&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/table&gt;</span>
		</div>
		<div align="left">
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/body&gt;</span>
		</div>
		<div>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">&lt;/html&gt;</span>
		</div>
		<div style="TEXT-INDENT: 22.5pt">
				<span style="FONT-SIZE: 9pt">我们上面的例子使用的是服务器端验证。</span>
				<span style="FONT-SIZE: 9pt">WebWork</span>
				<span style="FONT-SIZE: 9pt">也为我们提供了方便的客户端验证。它将验证自动生成</span>
				<span style="FONT-SIZE: 9pt">JavaScript</span>
				<span style="FONT-SIZE: 9pt">脚本。如果要使用客户端验证只需改变相应的验证类型就可以了（输入页面的表单必需使用</span>
				<span style="FONT-SIZE: 9pt">&lt;ww:form&gt;</span>
				<span style="FONT-SIZE: 9pt">标签，并设置属性“</span>
				<span style="FONT-SIZE: 9pt">validate="true"</span>
				<span style="FONT-SIZE: 9pt">”）。具体的验证类型可以在</span>
				<span style="FONT-SIZE: 9pt">WebWork</span>
				<span style="FONT-SIZE: 9pt">的包</span>
				<span style="FONT-SIZE: 9pt; BACKGROUND: white 0% 50%; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">com.opensymphony.webwork.validators</span>
				<span style="FONT-SIZE: 9pt">中找到。</span>
		</div>
<img src ="http://www.blogjava.net/lijiajia418/aggbug/67076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:40 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork教程- Interceptor(拦截器)</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67075.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67075.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67075.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67075.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Interceptor				（拦截器）将				Action				共用的行为独立出来，在				Action				执行前后运行。这也就是我们所说的				AOP				（				Aspect Oriented Programming				，面向切面编程），它是分散关注的编程方法，它将通用需求功能从不相关类之中分离出来；同时，能够使得很多类共享一个行为，一...&nbsp;&nbsp;<a href='http://www.blogjava.net/lijiajia418/archive/2006/09/01/67075.html'>阅读全文</a><img src ="http://www.blogjava.net/lijiajia418/aggbug/67075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:39 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebWork介绍－Action篇</title><link>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67074.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67074.html</guid><wfw:comment>http://www.blogjava.net/lijiajia418/comments/67074.html</wfw:comment><comments>http://www.blogjava.net/lijiajia418/archive/2006/09/01/67074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lijiajia418/comments/commentRss/67074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lijiajia418/services/trackbacks/67074.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Action								简介																		Action				在				MVC				模式中担任控制部分的角色				, 				在				WebWork				中使用的最多				,				用于接收页面参数，起到对				HttpRequest				判断处理作用。每个请求的动作都对应于一个相应的	...&nbsp;&nbsp;<a href='http://www.blogjava.net/lijiajia418/archive/2006/09/01/67074.html'>阅读全文</a><img src ="http://www.blogjava.net/lijiajia418/aggbug/67074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:38 <a href="http://www.blogjava.net/lijiajia418/archive/2006/09/01/67074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>