﻿<?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-探索与发现-随笔分类-webwork</title><link>http://www.blogjava.net/zhaijianhui/category/13672.html</link><description>研究java技术</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 09:33:07 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 09:33:07 GMT</pubDate><ttl>60</ttl><item><title>webwork使用spring ioc集成</title><link>http://www.blogjava.net/zhaijianhui/archive/2006/08/03/61441.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Wed, 02 Aug 2006 23:29:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2006/08/03/61441.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/61441.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2006/08/03/61441.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/61441.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/61441.html</trackback:ping><description><![CDATA[
		<p>
				<span class="postbody">
						<font size="1">在WebWork 2.2.x 之后,它将直接内建支持spring ioc了,所以更加简单了,,<br />做个例子<br />第一步:在web-inf下建一个webwork.properties文件,<br />内容为<br />webwork.objectFactory = spring<br />第二步:也就是加载applicationContext.xml,可以采取前面前的两种之一,,这里采用后面那种<br />&lt;listener&gt;<br />  &lt;listener-class&gt;<br />   org.springframework.web.context.ContextLoaderListener<br />  &lt;/listener-class&gt;<br /> &lt;/listener&gt;<br />第三步:创建要装载的实例,在applicationContext.xml(采用监听的方式,记住默认的位置是在web-inf下面)<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt;</font>
				</span>
		</p>
		<p>
				<span class="postbody">
						<font size="1">&lt;beans default-autowire="autodetect"&gt; &lt;!--记注一定要加上--&gt;<br />  &lt;bean id="userManager" singleton="true" class="helloWorld.UserManager"/&gt; <br />&lt;/beans&gt;<br />第四步:在修改我原来的例子<br />HelloWorldAction.java<br />为<br />package helloWorld;<br />import com.opensymphony.xwork.ActionSupport;<br />public class HelloWorldAction extends ActionSupport{</font>
				</span>
		</p>
		<p>
				<span class="postbody">
						<font size="1">    String greeting;<br />    UserManager userManager;<br />    public void setGreeting(String greeting) {<br />        this.greeting = greeting;<br />    }</font>
				</span>
		</p>
		<p>
				<span class="postbody">
						<font size="1">    public String getGreeting() {<br />        return greeting;<br />    }<br />    public UserManager getUserManager() {<br />  return userManager;<br /> }</font>
				</span>
		</p>
		<p>
				<span class="postbody">
						<font size="1"> public void setUserManager(UserManager userManager) {<br />  this.userManager = userManager;<br /> }</font>
				</span>
		</p>
		<p>
				<span class="postbody">
						<font size="1"> public String execute() throws Exception {<br />  userManager.sayHello();<br />  System.out.println("after userManager.sayHello()");<br />        if (greeting.equals("") || greeting == null) {<br />            addFieldError("greeting", getText("greeting"));<br />            return ERROR;<br />        }<br />        return SUCCESS;<br />    }<br />}<br />而UserManager.java类如下<br />package helloWorld;<br /></font>
				</span>
				<span class="postbody">
						<font size="1">public class UserManager {<br /> public UserManager()<br /> {<br />  System.out.println("create instance of UserManger");<br /> }<br /> public void sayHello()<br /> {<br />  System.out.println("hello zjh");<br /> }<br />}<br />再访问<a href="http://localhost:8080/WebWork/index.jsp">http://localhost:8080/WebWork/index.jsp</a>提交后在tomcat console窗口打印出<br />hello zjh<br />after userManager.sayHello()</font>
				</span>
		</p>
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/61441.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2006-08-03 07:29 <a href="http://www.blogjava.net/zhaijianhui/archive/2006/08/03/61441.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork 学习二(validation验证框架)</title><link>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61406.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Wed, 02 Aug 2006 14:10:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61406.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/61406.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61406.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/61406.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/61406.html</trackback:ping><description><![CDATA[webwork使用 validation验证框架，其采用的是拦截器<br />看一个例子:<br /><div class="O" style="tab-interval: .4913in" v:shape="_x0000_s1026"><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b>SimpleAction-validation.xml 名字前缀要与类名相同，而且与之在同一目录下</b></span><br />&lt;!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "<a href="http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd</a>"&gt;<br />&lt;validators&gt;<br />    &lt;field name="count"&gt;<br />        &lt;field-validator type="required"&gt;<br />            &lt;message&gt;You must enter a value for count.&lt;/message&gt;<br />        &lt;/field-validator&gt;<br />        &lt;field-validator type="int"&gt;<br />            &lt;param name="min"&gt;0&lt;/param&gt;<br />            &lt;param name="max"&gt;5&lt;/param&gt;<br />            &lt;message&gt;<br />    count must be between ${min} and ${max}, current value is ${count}.<br />     &lt;/message&gt;<br />        &lt;/field-validator&gt;<br />    &lt;/field&gt;<br />&lt;/validators&gt;<br />==<br />package helloWorld;<br />import com.opensymphony.xwork.ActionSupport;<br />import com.opensymphony.xwork.ValidationAware;</div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">public class SimpleAction extends ActionSupport implements ValidationAware {</div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    private int count;</div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public void setCount(int count) {<br />        this.count = count;<br />    }</div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public int getCount() {<br />        return count;<br />    }</div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public String doExecute() throws Exception {<br />   return SUCCESS;<br />    }<br />}<br />------<br />在xwork.xml里面添加<br />&lt;interceptors&gt;<br /> &lt;interceptor name="validator" class="com.opensymphony.xwork.validator.ValidationInterceptor"/&gt;<br /> &lt;/interceptors&gt;<br />&lt;action name="validation" class="helloWorld.SimpleAction"&gt;<br />   &lt;result name="success" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/simple_result.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;result name="error" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/simple.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;!-- If you don't override execute(), you must do this: --&gt;<br />   &lt;result name="input" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/simple.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;interceptor-ref name="validator" /&gt;<br />   &lt;interceptor-ref name="debugStack" /&gt;<br />   &lt;interceptor-ref name="defaultStack" /&gt;<br />   <br />  &lt;/action&gt;<br />注意interceptor为多个时与servlet里面的filter一样按顺序依次传递,假若失败就为影响后面的程序运行效果.<br />还有两个jsp页面<br />simple_result.jsp<br />&lt;%@ taglib prefix="ww" uri="webwork"%&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;title&gt;WebWork Validation Example&lt;/title&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;p&gt;<br />   The count is<br />   &lt;ww:property value="count" /&gt;<br />  &lt;/p&gt;<br />  &lt;/form&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;<br />--<br />simple.jsp<br />&lt;%@ taglib prefix="ui" uri="webwork" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />    &lt;title&gt;WebWork Validation Example&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="validation.action" method="post"&gt;<br />&lt;table&gt;<br />     &lt;ui:textfield label="Set the counter" name="count"/&gt;<br />    &lt;ui:submit value="'Submit'"/&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />运行效果如下<br /><table><tbody><tr errorfor="count"><td valign="top" align="middle" colspan="2"><span class="errorMessage">count must be between 0 and 5, current value is 8. </span></td></tr><tr><td class="tdLabel"><label class="errorLabel" for="count">Set the counter:</label></td><td><input id="count" value="8" name="count" /></td></tr><tr><td colspan="2"><div align="right"><input type="submit" value="'Submit'" /></div></td></tr></tbody></table><br />下面为日期类型的验证<br /><div style="tab-interval: .4913in" v:shape="_x0000_s1026"><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><font face="Times New Roman"></font><span style="WIDTH: 3.69%; mso-tab-count: 1"></span>&lt;field-validator type="date"&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 5.8%; mso-tab-count: 2"></span>&lt;param name="min"&gt;12/22/2002&lt;/param&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 3.69%; mso-tab-count: 1"></span><span style="mso-spacerun: yes">  </span>&lt;param name="max"&gt;12/25/2002&lt;/param&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">  </span><span style="WIDTH: 3.1%; mso-tab-count: 2"></span>&lt;message&gt;The date must be between 12-22-2002 and 12-25-2002.&lt;/message&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 3.69%; mso-tab-count: 1"></span>&lt;/field-validator&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/field&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;field name="foo"&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 3.69%; mso-tab-count: 1"></span>&lt;field-validator type="int"&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 5.8%; mso-tab-count: 2"></span>&lt;param name="min"&gt;0&lt;/param&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 5.8%; mso-tab-count: 2"></span>&lt;param name="max"&gt;100&lt;/param&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 5.8%; mso-tab-count: 2"></span>&lt;message key="foo.range"&gt;Could not find foo.range!&lt;/message&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 3.69%; mso-tab-count: 1"></span>&lt;/field-validator&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/field&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/validators&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><b></b></span></div><div class="O" style="mso-line-spacing: '100 50 0'; mso-margin-left-alt: 213"></div></div><br /></div></div><img src ="http://www.blogjava.net/zhaijianhui/aggbug/61406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2006-08-02 22:10 <a href="http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>webwork学习一</title><link>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61377.html</link><dc:creator>蜘蛛</dc:creator><author>蜘蛛</author><pubDate>Wed, 02 Aug 2006 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61377.html</guid><wfw:comment>http://www.blogjava.net/zhaijianhui/comments/61377.html</wfw:comment><comments>http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhaijianhui/comments/commentRss/61377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhaijianhui/services/trackbacks/61377.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: NewBaskerville-Roman; mso-hansi-font-family: NewBaskerville-Roman; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">本地中文化网址</span>
				<span lang="EN-US" style="FONT-FAMILY: NewBaskerville-Roman; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: NewBaskerville-Roman; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">
						<a href="http://wiki.javascud.org/display/ww2cndoc/Home">http://wiki.javascud.org/display/ww2cndoc/Home</a>
						<br />
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: NewBaskerville-Roman; mso-hansi-font-family: NewBaskerville-Roman; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">在线文档</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: NewBaskerville-Roman; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="mso-bidi-font-size: 10.5pt; mso-font-kerning: 0pt">
						<font size="3">http://www.opensymphony.com/webwork/wikidocs</font>
				</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
						<span lang="EN-US">struts</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的区别有实现国级化的时候，</span>
						<span lang="EN-US">struts</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
						<span lang="EN-US">message</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只能出现</span>
						<span lang="EN-US">5</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个动态的值</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="3">也就像下面的信息</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">Your {0} ticket(s) for flight {1} have been booked.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">The total cost is {2}. Your confirmation number is {3}.<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">Your flight leaves at {4} and arrives at {5}</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="3">需要分成两段才能完成</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;bean:message key="confirmation.msg1"<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">arg0="count" arg1="flightNumber" arg2="cost"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;bean:message key="confirmation.msg2"<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">arg0="confirmation" arg1="departure" arg2="arrival"/&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="3">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</span>
						<span lang="EN-US">webwork</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是无限制的，像上面的可以写成这样子</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:text name="confirmation.msg"&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="count"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="flightNumber"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="cost"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="confirmation"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="departure"/&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;ww:param value="arrival"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;/ww:text&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">还有在web.xml里同指定webwork的tld所在位置<br /></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;taglib&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;taglib-uri&gt;webwork&lt;/taglib-uri&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;taglib-location&gt;<br />/WEB-INF/lib/webwork-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">2.1.7</st1:chsdate>.jar<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;/taglib-location&gt;<o:p></o:p></span>
		</p>
		<div style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-bottom-alt: solid windowtext .75pt">
				<p class="MsoNormal" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm" align="left">
						<span lang="EN-US" style="FONT-SIZE: 8pt; FONT-FAMILY: Courier; mso-bidi-font-family: Courier; mso-font-kerning: 0pt">&lt;/taglib&gt;<br />在很多书上都讲上面可行，可是我却报下面的错．．．换成下面那种方式就ok了<br /></span>
						<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: NewBaskerville-Roman; mso-bidi-font-family: NewBaskerville-Roman; mso-font-kerning: 0pt">
								<o:p>
								</o:p>
						</span>
				</p>org.apache.jasper.JasperException: Unable to initialize TldLocationsCache: null<br />也可以指定webwork.tld所在的位置也可以，，如<br />/WEB-INF/webwork.tld(webwork.tld拷到这下面来).<br /><br />一个简单的例子<br /> 
<div class="O" style="tab-interval: .4913in" v:shape="_x0000_s1026"><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">import com.opensymphony.xwork.Action; </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">public class HelloWorldAction implements Action{ </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>String greeting; </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>public String getGreeting() { </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">        </span>return greeting; </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>} </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>public String execute() throws Exception { </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">        </span>greeting = "Hello World!"; </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">        </span>return SUCCESS; </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>} </span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">} </span></div><div style="mso-line-spacing: '100 50 0'; mso-margin-left-alt: 213"></div></div>实现的action接口里面只有一个方法<br /> 
<div style="tab-interval: .4913in" v:shape="_x0000_s1026"><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">interface Action { </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 4.78%; mso-tab-count: 1"></span>String </span><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">execute() </span><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">throws Exception; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">}</span><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: navy; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><b></b></span></div><div class="O" style="mso-line-spacing: '100 50 0'; mso-margin-left-alt: 213"></div></div><div style="tab-interval: .4913in" v:shape="_x0000_s1026"><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b>greetings.jsp </b></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b></b></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;%@ taglib prefix="ww" uri="webwork" %&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;html&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;head&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="mso-spacerun: yes">    </span>&lt;title&gt;First WebWork Example&lt;/title&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/head&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;body&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;p&gt;&lt;ww:property value="greeting"/&gt;&lt;/p&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/body&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/html&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b>xwork.xml 放到就用的classpath下面(也就web-inf/classes下面)</b></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b></b></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;action name="hello" class="HelloWorldAction"&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;result name="success" type="dispatcher"&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><span style="WIDTH: 4.39%; mso-tab-count: 1"></span>&lt;param name="location"&gt;/greetings.jsp&lt;/param&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/result&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;interceptor-ref name="debugStack"/&gt; </span></div><div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;interceptor-ref name="defaultStack"/&gt; </span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'">&lt;/action&gt; </span></div><div class="O" style="mso-line-spacing: '100 50 0'; mso-margin-left-alt: 213"></div></div>还有在web.xml里面加上webwork的一个加载类<br />&lt;servlet&gt;<br />        &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />        &lt;servlet-class&gt;com.opensymphony.webwork.dispatcher.ServletDispatcher&lt;/servlet-class&gt;<br />    &lt;/servlet&gt;</div>
		<div style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-bottom-alt: solid windowtext .75pt">    &lt;servlet-mapping&gt;<br />        &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />        &lt;url-pattern&gt;*.action&lt;/url-pattern&gt;<br />    &lt;/servlet-mapping&gt;<br /></div>
		<div class="O" style="tab-interval: .4913in; mso-margin-left-alt: 213" v:shape="_x0000_s1026">
				<span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
						<strong>ActionSupport<br /></strong>
						<div style="tab-interval: .4913in" v:shape="_x0000_s1026">
								<div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>1:提供对错误信息的支持</strong>
										</span>
								</div>
								<div class="O2" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana">
												<span style="LEFT: -4.04%; POSITION: absolute; mso-special-format: bullet">
														<strong>•</strong>
												</span>
										</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>action and field specific errors </strong>
										</span>
								</div>
								<div class="O2" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana">
												<span style="LEFT: -4.04%; POSITION: absolute; mso-special-format: bullet">
														<strong>•</strong>
												</span>
										</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>field errors are automatically supported by views </strong>
										</span>
								</div>
								<div class="O2" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
										</span>
								</div>
								<div class="O1" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 465; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana">
												<span style="LEFT: -4.58%; POSITION: absolute; mso-special-format: bullet">
														<strong>–</strong>
												</span>
										</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>2:国际化的支持<br /></strong>
										</span>
								</div>
								<div class="O2" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana">
												<span style="LEFT: -4.04%; POSITION: absolute; mso-special-format: bullet">
														<strong>•</strong>
												</span>
										</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>1 resource bundle per action </strong>
										</span>
								</div>
								<div class="O2" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 720; mso-char-wrap: 1; mso-kinsoku-overflow: 1">
										<span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana">
												<span style="LEFT: -4.04%; POSITION: absolute; mso-special-format: bullet">
														<strong>•</strong>
												</span>
										</span>
										<span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">
												<strong>pervasive UI support for retrieving messages<br /></strong> --------------------------------------------------------------------------------
<div class="O" style="tab-interval: .4913in" v:shape="_x0000_s1026"><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong>ActionSupport Example: </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong>import com.opensymphony.xwork.ActionSupport; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong>public class HelloWorldAction extends ActionSupport{ </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>String greeting; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>public void setGreeting(String greeting) { </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">        </span>this.greeting = greeting; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>} </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>public String getGreeting() { </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">        </span>return greeting; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>} </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>public String execute() throws Exception { </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">        </span>if (greeting.equals("") || greeting == null) { </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">            </span>addFieldError("greeting", getText("greeting")); </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">            </span>return ERROR; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">        </span>} </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">        </span>return SUCCESS; </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong><span style="mso-spacerun: yes">    </span>} </strong></span></div><div style="mso-line-spacing: '90 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-ascii-font-family: 'Courier New'; mso-bidi-font-family: 'Lucida Sans Unicode'"><strong>} </strong></span></div><div style="mso-line-spacing: '90 50 0'; mso-margin-left-alt: 213">这里的getText("greeting")的greeting要与<strong><font face="Courier New">HelloWorldAction.properties(放在与HelloWorldAction.class同级目录下面，名称也一样)里的greeting=Enter your greeting please相同<br />上面的set.get其实与struts当中的ActionFrom类似．．<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="gbk"%&gt;<br />&lt;%@ taglib prefix="ui" uri="webwork" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />    &lt;title&gt;First WebWork Example&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="hello.action" method="post"&gt;<br />&lt;table&gt;<br />    &lt;ui:textfield label="欢迎语句" name="greeting"/&gt;<br />    &lt;ui:submit value="'Submit'"/&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />这里的greeting要与HelloWorldActio.java里的属性一致<br />如出现错误会显示在当前页，<br /><table><tbody><tr errorfor="greeting"><td valign="top" align="middle" colspan="2"><span class="errorMessage">Enter your greeting please</span></td></tr><tr><td class="tdLabel"><label class="errorLabel" for="greeting">欢迎语句:</label></td><td><input id="greeting" name="greeting" /></td></tr><tr><td colspan="2"><div align="right"><input type="submit" value="'Submit'" /></div></td></tr></tbody></table><br />如填上内容，就会相应的调用setGreeting()方法的．．<br />&lt;%@ taglib prefix="ww" uri="webwork" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />    &lt;title&gt;First WebWork Example&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;&lt;ww:property value="greeting"/&gt;&lt;/p&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />把填的内容显示出来<br />在xwork.xml里的&lt;action&gt;<br />也相应的变成<br />&lt;action name="hello" class="helloWorld.HelloWorldAction"&gt;<br />   &lt;result name="success" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/greetings.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;result name="error" type="dispatcher"&gt;<br />          &lt;param name="location"&gt;/index.jsp&lt;/param&gt;<br />            &lt;/result&gt;<br />  &lt;/action&gt;<br />------------------------------------------------------------<br /> 
<div style="tab-interval: .4913in" v:shape="_x0000_s1026"><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b>Model-Driven Actions vs. Field-Driven Actions </b></span></div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span lang="EN-CA" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: 'Lucida Sans Unicode'; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'"><b></b></span></div><span style="FONT-SIZE: 67%; FONT-FAMILY: Verdana"><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><span style="LEFT: -4.72%; POSITION: absolute; mso-special-format: bullet">•</span></div></span><span lang="EN-US" style="FONT-SIZE: 12pt; COLOR: black; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-bidi-font-family: 'Lucida Sans Unicode'">2 types of Actions possible: <br /></span>(1)Field-Drivern上面的例子就是<br />(2)ModelDriven<br />package helloWorld;</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">public class Pet {<br />    private long id;<br /> private String name;</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public long getId() {<br />        return id;<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public void setId(long id) {<br />        this.id = id;<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public String getName() {<br />        return name;<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public void setName(String name) {<br />        this.name = name;<br />    }<br />}<br />--<br />package helloWorld;<br />import com.opensymphony.xwork.*;</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">public class AddPetAction extends ActionSupport implements ModelDriven{<br /> Pet pet = new Pet();</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public Object getModel() {<br />        return pet;<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    protected void doValidation() {<br />        if (pet.getId() == 0) {<br />            addFieldError("id", "Please enter in an id number for you new Pet.");<br />        }<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1">    public String doExecute() throws Exception {<br />        if (hasErrors())<br />            return ERROR;<br />        return SUCCESS;<br />    }</div><div class="O" style="mso-line-spacing: '100 -24 0'; mso-margin-left-alt: 213; mso-char-wrap: 1; mso-kinsoku-overflow: 1"><br />}<br />需实现ModelDriven这个接口，它也只有一个方法<br />public Object getModel();<br /> 在xwork.xml加上<br />&lt;action name="addpet" class="helloWorld.AddPetAction"&gt;<br />   &lt;result name="success" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/petadded.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;result name="error" type="dispatcher"&gt;<br />    &lt;param name="location"&gt;/addpet.jsp&lt;/param&gt;<br />   &lt;/result&gt;<br />   &lt;interceptor-ref name="debugStack" /&gt;<br />   &lt;interceptor-ref name="defaultStack" /&gt;<br />  &lt;/action&gt;<br />还有两个页面分别用来添加和显示用的<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%&gt;<br />&lt;%@ taglib prefix="ui" uri="webwork" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />    &lt;title&gt;First WebWork Example&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;form action="addpet.action" method="post"&gt;<br />&lt;table&gt;<br />    &lt;ui:textfield label="Pet ID Number" name="id"/&gt;<br />    &lt;ui:textfield label="Name of Pet" name="name"/&gt;<br />    &lt;ui:submit value="'Submit'"/&gt;<br />&lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />-------petadded.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%&gt;<br />&lt;%@ taglib prefix="ww" uri="webwork" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />    &lt;title&gt;First WebWork Example&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&lt;p&gt;Added a pet with the following properties:&lt;/p&gt;<br />&lt;ul&gt;<br />    &lt;li&gt;ID: &lt;ww:property value="id"/&gt;&lt;/li&gt;<br />    &lt;li&gt;Name: &lt;ww:property value="name"/&gt;&lt;/li&gt;<br />&lt;/ul&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></div></font></strong></div></div></span>
								</div>
						</div>
				</span>
		</div>
<img src ="http://www.blogjava.net/zhaijianhui/aggbug/61377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhaijianhui/" target="_blank">蜘蛛</a> 2006-08-02 19:02 <a href="http://www.blogjava.net/zhaijianhui/archive/2006/08/02/61377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>