﻿<?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-SIMONE-随笔分类-struts</title><link>http://www.blogjava.net/wangxinsh55/category/14223.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 27 Oct 2011 13:51:33 GMT</lastBuildDate><pubDate>Thu, 27 Oct 2011 13:51:33 GMT</pubDate><ttl>60</ttl><item><title>Spring事务配置的五种方式</title><link>http://www.blogjava.net/wangxinsh55/archive/2011/10/27/362165.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 27 Oct 2011 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2011/10/27/362165.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/362165.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2011/10/27/362165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/362165.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/362165.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原来来自：http://www.blogjava.net/robbie/archive/2009/04/05/264003.html&nbsp;&nbsp;&nbsp; 前段时间对Spring的事务配置做了比较深入的研究，在此之间对Spring的事务配置虽说也配置过，但是一直没有一个清楚的认识。通过这次的学习发觉Spring的事务配置只要把思路理清，还是比较好掌握的。 &nbsp;&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2011/10/27/362165.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/362165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2011-10-27 14:31 <a href="http://www.blogjava.net/wangxinsh55/archive/2011/10/27/362165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2 标签中的调用Enum方法或调用内部类中的静态方法</title><link>http://www.blogjava.net/wangxinsh55/archive/2011/08/24/357191.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 24 Aug 2011 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2011/08/24/357191.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/357191.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2011/08/24/357191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/357191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/357191.html</trackback:ping><description><![CDATA[<div><div>com.duxiu.mobile.dao.web.WapRuleConfigDao这个为一个类；CustomPage是com.duxiu.mobile.dao.web.WapRuleConfigDao类中的Enum或是内部类，则Struts2标签中调用的方法如下：</div>&lt;s:property value="@com.duxiu.mobile.dao.web.WapRuleConfigDao$CustomPage@login.value" /&gt;</div><img src ="http://www.blogjava.net/wangxinsh55/aggbug/357191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2011-08-24 14:48 <a href="http://www.blogjava.net/wangxinsh55/archive/2011/08/24/357191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>历史上关于struts2 遍历Map最全的总结</title><link>http://www.blogjava.net/wangxinsh55/archive/2010/09/21/332623.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 21 Sep 2010 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2010/09/21/332623.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/332623.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2010/09/21/332623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/332623.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/332623.html</trackback:ping><description><![CDATA[<p><span class="hilite1">Struts2</span>中iterator标签遍历<span class="hilite3">map</span>总结</p>
<p>针对以下几种情况的Map:</p>
<li><span>&nbsp;&nbsp; &nbsp;</span><span class="keyword">private</span><span>&nbsp;<span class="hilite3">Map</span>&lt;String,String&gt;&nbsp;<span class="hilite3">map</span>; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;<span class="hilite3">Map</span>&lt;String,Student&gt;&nbsp;studentMap; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;<span class="hilite3">Map</span>&lt;String,String[]&gt;&nbsp;arrayMap; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;<span class="hilite3">Map</span>&lt;String,List&lt;Student&gt;&gt;&nbsp;listMap;</span></li>
<li><span><br />
</span></li>
<p>&nbsp;</p>
<hr />
<li><span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;<span class="hilite3">map</span>=</span><span class="keyword">new</span><span>&nbsp;HashMap&lt;String,String&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="hilite3">map</span>.put(</span><span class="string">"1"</span><span>,&nbsp;</span><span class="string">"one"</span><span>); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="hilite3">map</span>.put(</span><span class="string">"2"</span><span>,&nbsp;</span><span class="string">"two"</span><span>); &nbsp;&nbsp;</span></li>
<p>用法：</p>
<li><span>&nbsp;&nbsp; &lt;s:iterator&nbsp;value=</span><span class="string">"<span class="hilite3">map</span>"</span><span>&nbsp;id=</span><span class="string">"column"</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&lt;s:property&nbsp;value=</span><span class="string">"#column"</span><span>/&gt;&lt;br&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;key:&nbsp;&lt;s:property&nbsp;value=</span><span class="string">"key"</span><span>/&gt;&lt;br&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;value:&lt;s:property&nbsp;value=</span><span class="string">"value"</span><span>/&gt;&lt;br&gt; &nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;/s:iterator&gt; &nbsp;&nbsp;</span></li>
<p>&nbsp;</p>
<hr />
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;studentMap=</span><span class="keyword">new</span><span>&nbsp;HashMap&lt;String,Student&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;studentMap.put(</span><span class="string">"student1"</span><span>,</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">1</span><span>),</span><span class="string">"20034140201"</span><span>,</span><span class="string">"张三1"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">25</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;studentMap.put(</span><span class="string">"student2"</span><span>,</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">2</span><span>),</span><span class="string">"20034140202"</span><span>,</span><span class="string">"张三2"</span><span>,</span><span class="string">"女"</span><span>,</span><span class="number">26</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;studentMap.put(</span><span class="string">"student3"</span><span>,</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">3</span><span>),</span><span class="string">"20034140202"</span><span>,</span><span class="string">"张三3"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">27</span><span>)); &nbsp; &nbsp;</span></li>
<p>用法：</p>
<p>&nbsp;</p>
<li><span>&nbsp;&nbsp; &nbsp;&lt;s:iterator&nbsp;value=</span><span class="string">"studentMap"</span><span>&nbsp;id=</span><span class="string">"column"</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"#column"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value.id"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value.num"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value.name"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value.sex"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value.age"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:iterator&gt;&nbsp;</span></li>
<p>&nbsp;</p>
<hr />
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrayMap=</span><span class="keyword">new</span><span>&nbsp;HashMap&lt;String,String[]&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrayMap.put(</span><span class="string">"arr1"</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;String[]{</span><span class="string">"1"</span><span>,</span><span class="string">"2003401"</span><span>,</span><span class="string">"leejie"</span><span>,</span><span class="string">"male"</span><span>,</span><span class="string">"20"</span><span>}); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrayMap.put(</span><span class="string">"arr2"</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;String[]{</span><span class="string">"2"</span><span>,</span><span class="string">"2003402"</span><span>,</span><span class="string">"huanglie"</span><span>,</span><span class="string">"male"</span><span>,</span><span class="string">"25"</span><span>}); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrayMap.put(</span><span class="string">"arr3"</span><span>,&nbsp;</span><span class="keyword">new</span><span>&nbsp;String[]{</span><span class="string">"3"</span><span>,</span><span class="string">"2003403"</span><span>,</span><span class="string">"lixiaoning"</span><span>,</span><span class="string">"male"</span><span>,</span><span class="string">"21"</span><span>}); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<p>用法</p>
<p>&nbsp;</p>
<li><span>&nbsp;&nbsp; &nbsp;&lt;s:iterator&nbsp;value=</span><span class="string">"arrayMap"</span><span>&nbsp;id=</span><span class="string">"column"</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"#column"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value[0]"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value[1]"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value[2]"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value[3]"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"value[4]"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:iterator&gt; &nbsp;</span></li>
<p>&nbsp;</p>
<hr />
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listMap=</span><span class="keyword">new</span><span>&nbsp;HashMap&lt;String,List&lt;Student&gt;&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Student&gt;&nbsp;list1=</span><span class="keyword">new</span><span>&nbsp;ArrayList&lt;Student&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list1.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">1</span><span>),</span><span class="string">"20034140201"</span><span>,</span><span class="string">"张三1"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">25</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list1.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">2</span><span>),</span><span class="string">"20034140202"</span><span>,</span><span class="string">"张三2"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">25</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list1.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">3</span><span>),</span><span class="string">"20034140203"</span><span>,</span><span class="string">"张三3"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">25</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listMap.put(</span><span class="string">"class1"</span><span>,&nbsp;list1); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Student&gt;&nbsp;list2=</span><span class="keyword">new</span><span>&nbsp;ArrayList&lt;Student&gt;(); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list2.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">1</span><span>),</span><span class="string">"20034140301"</span><span>,</span><span class="string">"李四1"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">20</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list2.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">2</span><span>),</span><span class="string">"20034140302"</span><span>,</span><span class="string">"李四2"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">21</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list2.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">3</span><span>),</span><span class="string">"20034140303"</span><span>,</span><span class="string">"李四3"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">22</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list2.add(</span><span class="keyword">new</span><span>&nbsp;Student(</span><span class="keyword">new</span><span>&nbsp;Long(</span><span class="number">4</span><span>),</span><span class="string">"20034140304"</span><span>,</span><span class="string">"李四4"</span><span>,</span><span class="string">"男"</span><span>,</span><span class="number">23</span><span>)); &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listMap.put(</span><span class="string">"class2"</span><span>,&nbsp;list2); &nbsp;&nbsp;</span></li>
<p>&nbsp;</p>
<p>用法：</p>
<li><span>&nbsp;&nbsp; &lt;s:iterator&nbsp;value=</span><span class="string">"listMap"</span><span>&nbsp;id=</span><span class="string">"column"</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:set&nbsp;name=</span><span class="string">"total"</span><span>&nbsp;value=</span><span class="string">"#column.value.size"</span><span>/&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:iterator&nbsp;value=</span><span class="string">"#column.value"</span><span>&nbsp;status=</span><span class="string">"s"</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;s:</span><span class="keyword">if</span><span>&nbsp;test=</span><span class="string">"#s.first"</span><span>&gt;&lt;td&nbsp;rowspan=</span><span class="string">"${total}"</span><span>&gt;&lt;s:property&nbsp;value=</span><span class="string">"#column.key"</span><span>/&gt;&lt;/td&gt;&lt;/s:</span><span class="keyword">if</span><span>&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"id"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"num"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"name"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"sex"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;s:property&nbsp;value=</span><span class="string">"age"</span><span>/&gt;&lt;/td&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/s:iterator&gt; &nbsp;&nbsp;</span></li>
<li><span>&nbsp;&nbsp;&lt;/s:iterator&gt; &nbsp;</span></li>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/332623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2010-09-21 17:56 <a href="http://www.blogjava.net/wangxinsh55/archive/2010/09/21/332623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringSide 3 中的多数据源配置的问题</title><link>http://www.blogjava.net/wangxinsh55/archive/2010/02/25/313859.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 25 Feb 2010 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2010/02/25/313859.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/313859.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2010/02/25/313859.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/313859.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/313859.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在SpringSide 3中，白衣提供的预先配置好的环境非常有利于用户进行快速开发，但是同时也会为扩展带来一些困难。最直接的例子就是关于在项目中使用多个数据源的问题，似乎很难搞。在上一篇中，我探讨了SpringSide 3 中的数据访问层，在这一篇中，我立志要解决多数据源配置的难题，我的思路是这样的：第一步、测试能否配置多个DataSource第二步、测试能否配置多个Sessi...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2010/02/25/313859.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/313859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2010-02-25 10:27 <a href="http://www.blogjava.net/wangxinsh55/archive/2010/02/25/313859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>S2SH 框架 基于annotation配置</title><link>http://www.blogjava.net/wangxinsh55/archive/2010/02/24/313835.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 24 Feb 2010 14:06:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2010/02/24/313835.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/313835.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2010/02/24/313835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/313835.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/313835.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 此次整合的版本是：struts2.1.8 + spring2.5.6 +hibernate3.3.2一.先整合hibernate和spring：hibernate所需要jar包：antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、hibernate3.jar、javassist-3.9.0.GA.jar、jta...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2010/02/24/313835.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/313835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2010-02-24 22:06 <a href="http://www.blogjava.net/wangxinsh55/archive/2010/02/24/313835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2+spring发送mail</title><link>http://www.blogjava.net/wangxinsh55/archive/2009/05/15/270872.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Fri, 15 May 2009 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2009/05/15/270872.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/270872.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2009/05/15/270872.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/270872.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/270872.html</trackback:ping><description><![CDATA[<div id="articleBody">
<p>&nbsp;<wbr>
spring中有集成了javamail，在使用框架的时候用spring来发送mail也是很方便的。下面是一个spring
mail的小例子。</p>
<p>&nbsp;<wbr>
在这个例子中，除了需要struts和spring的框架外，还需要mail.jar,activation.jar.</p>
<p>&nbsp;<wbr>&nbsp;<wbr>web.xml的代码：</p>
<p>&nbsp;<wbr> &lt;?xml version="1.0"
encoding="UTF-8"?&gt;<br />
&lt;web-app version="2.4"<br />
&nbsp;<wbr>xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>"<br />
&nbsp;<wbr>xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br />
&nbsp;<wbr>xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a><br />
&nbsp;<wbr><a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;<br />
&nbsp;<wbr>&lt;context-param&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;param-value&gt;classpath*:spring/*.xml&lt;/param-value&gt;<br />
&nbsp;<wbr>&lt;/context-param&gt;</p>
<p>&nbsp;<wbr>&lt;listener&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />
&nbsp;<wbr>&lt;/listener&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;!-- Spring refresh Introspector to prevent from out
of memory&nbsp;<wbr> --&gt;<br />
&nbsp;<wbr>&lt;listener&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;listener-class&gt;org.springframework.web.util.IntrospectorCleanupListener&lt;/listener-class&gt;<br />
&nbsp;<wbr>&lt;/listener&gt;<br />
&nbsp;<wbr>&lt;!-- Support session scope, Spring
bean --&gt;<br />
&nbsp;<wbr>&lt;listener&gt;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener&lt;/listener-class&gt;<br />
&nbsp;<wbr>&lt;/listener&gt;<br />
&nbsp;<wbr>&lt;!-- Struts2 Action
Mapping--&gt;<br />
&nbsp;<wbr>&lt;filter&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;filter-class&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
org.apache.struts2.dispatcher.FilterDispatcher<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/filter-class&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/filter&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;listener&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/listener&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&lt;filter-mapping&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/filter-mapping&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&lt;!--
session time out --&gt;<br />
&nbsp;<wbr>&lt;session-config&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;session-timeout&gt;30&lt;/session-timeout&gt;<br />
&nbsp;<wbr>&lt;/session-config&gt;<br />
&nbsp;<wbr>&lt;!-- default index
--&gt;<br />
&nbsp;<wbr>&lt;welcome-file-list&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;welcome-file&gt;send.jsp&lt;/welcome-file&gt;<br />
&nbsp;<wbr>&lt;/welcome-file-list&gt;<br />
&lt;/web-app&gt;<br />
Java类MailAction.java:</p>
<p>package action;</p>
<p>import org.springframework.mail.SimpleMailMessage;<br />
import org.springframework.mail.javamail.JavaMailSenderImpl;</p>
<p>import com.opensymphony.xwork2.Action;<br />
import com.opensymphony.xwork2.ActionSupport;<br />
public class MailAction extends ActionSupport{<br />
&nbsp;<wbr>private JavaMailSenderImpl mailSender;<br />
&nbsp;<wbr>private SimpleMailMessage mailMessage;<br />
&nbsp;<wbr>&nbsp;<wbr>public String sendMail(){<br />
&nbsp;<wbr>&nbsp;<wbr>SimpleMailMessage msg = new
SimpleMailMessage(mailMessage);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
msg.setText("Spring Mail Simple!");<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
mailSender.send(msg);<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
return Action.SUCCESS;<br />
&nbsp;<wbr>}<br />
&nbsp;<wbr>&nbsp;<wbr>public void
setMailMessage(SimpleMailMessage mailMessage) {<br />
&nbsp;<wbr>&nbsp;<wbr>this.mailMessage =
mailMessage;<br />
&nbsp;<wbr>}</p>
<p>&nbsp;<wbr>public void setMailSender(JavaMailSenderImpl
mailSender) {<br />
&nbsp;<wbr>&nbsp;<wbr>this.mailSender =
mailSender;<br />
&nbsp;<wbr>}</p>
<p>}<br />
spring配置文件applicationContext.xml:</p>
<p>&lt;?xml version="1.0"
encoding="UTF-8"?&gt;<br />
&lt;beans xmlns="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
xmlns:aop="<a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
xmlns:tx="<a href="http://www.springframework.org/schema/tx">http://www.springframework.org/schema/tx</a>"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
xsi:schemaLocation="<a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>
<a href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
<a href="http://www.springframework.org/schema/aop">http://www.springframework.org/schema/aop</a>
<a href="http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">http://www.springframework.org/schema/aop/spring-aop-2.0.xsd</a><br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
<a href="http://www.springframework.org/schema/tx">http://www.springframework.org/schema/tx</a>
<a href="http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">http://www.springframework.org/schema/tx/spring-tx-2.0.xsd</a>"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
default-autowire="byName"
default-lazy-init="true"&gt;</p>
<p>&nbsp;<wbr>&lt;bean id="mailAction"
class="action.MailAction"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;property
name="mailSender" ref="mailSender"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;property
name="mailMessage" ref="mailMessage"/&gt;<br />
&nbsp;<wbr>&lt;/bean&gt;<br />
&nbsp;<wbr><br />
&nbsp;<wbr>&lt;bean id="mailSender"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
class="org.springframework.mail.javamail.JavaMailSenderImpl"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="host"
value="smtp.163.com"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;!-- mail&nbsp;<wbr>
account&nbsp;<wbr>&nbsp;<wbr>
--&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="username"
value="shwwwx"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="password"
value="wwx1226"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property
name="javaMailProperties"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;props&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;prop
key="mail.smtp.auth"&gt;true&lt;/prop&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/props&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/property&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/bean&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;!-- mail template --&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;bean id="mailMessage"
class="org.springframework.mail.SimpleMailMessage"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="to" value="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#104;&#119;&#119;&#119;&#120;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;&#44;&#110;&#97;&#98;&#101;&#108;&#117;&#110;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;">shwwwx@163.com,nabelun@163.com"/</a>&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="from" value="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#104;&#119;&#119;&#119;&#120;&#64;&#49;&#54;&#51;&#46;&#99;&#111;&#109;">shwwwx@163.com"/</a>&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;property name="subject" value="Mail
Simple"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/bean&gt;<br />
&lt;/beans&gt;</p>
<p>struts2的配置文件struts.xml:</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"
?&gt;<br />
&lt;!DOCTYPE struts PUBLIC<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> "-//Apache
Software Foundation//DTD Struts Configuration 2.0//EN"<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> "<a href="http://struts.apache.org/dtds/struts-2.0.dtd">http://struts.apache.org/dtds/struts-2.0.dtd</a>"&gt;<br />
&lt;struts&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;constant name="struts.objectFactory" value="spring"
/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;constant name="struts.devMode" value="false"
/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;constant name="struts.i18n.encoding" value="utf-8"
/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;package
name="springtimer"&nbsp;<wbr>&nbsp;<wbr>
extends="struts-default"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;action name="mailsend" class="mailAction"
method="sendMail"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;result&gt;sendok.jsp&lt;/result&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;interceptor-ref
name="defaultStack"/&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/action&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;/package&gt;<br />
&lt;/struts&gt;<br />
页面send.jsp:</p>
<p>&lt;%@ page language="java" import="java.util.*"
pageEncoding="UTF-8"%&gt;<br />
&lt;html&gt;<br />
&nbsp;<wbr> &lt;head&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;title&gt;My JSP 'send.jsp' starting
page&lt;/title&gt;<br />
&nbsp;<wbr> &lt;/head&gt;<br />
&nbsp;<wbr> &lt;body&gt;<br />
&nbsp;<wbr>&lt;form action="mailsend.action"
method="post"&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&lt;input
type="submit" value="邮件发送"&gt;<br />
&nbsp;<wbr>&lt;/form&gt;<br />
&nbsp;<wbr> &lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>页面sendok.jsp:</p>
<p>&lt;%@ page language="java" import="java.util.*"
pageEncoding="UTF-8"%&gt;<br />
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"&gt;<br />
&lt;html&gt;<br />
&nbsp;<wbr> &lt;head&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>
&lt;title&gt;My JSP 'sendok.jsp' starting
page&lt;/title&gt;<br />
&nbsp;<wbr> &lt;/head&gt;<br />
&nbsp;<wbr> &lt;body&gt;<br />
&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> Send Mail
Success! &lt;br&gt;<br />
&nbsp;<wbr> &lt;/body&gt;<br />
&lt;/html&gt;<br />
运行send.jsp发送邮件，成功的话会跳转到sendok.jsp页面。</p>
</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/270872.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2009-05-15 16:27 <a href="http://www.blogjava.net/wangxinsh55/archive/2009/05/15/270872.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts2中二维数组的显示</title><link>http://www.blogjava.net/wangxinsh55/archive/2009/02/24/256486.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Tue, 24 Feb 2009 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2009/02/24/256486.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/256486.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2009/02/24/256486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/256486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/256486.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
<p>1、用两重循环的方法</p>
<p>&lt;s:iterator <font color="#339966">id</font>="<font color="#ff0000">data1</font>" value="#request.data" status="d1"&gt;<br />
&lt;s:iterator id="data2"  value="#request.<font color="#ff0000">data1</font>" status="d2"&gt;<br />
&lt;s:property value="#data2"/&gt;<br />
&lt;/s:iterator&gt;<br />
&lt;/s:iterator&gt;</p>
<p>2、用一重循环的方法</p>
<p><span><span class="tag">&lt;</span><span class="tag-name">s:iterator</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"<font color="#ff0000">collection1</font>"</span><span> </span><span class="attribute">status</span><span>=</span><span class="attribute-value">"<font color="#003300">status</font>"</span><span class="tag">&gt;<br />
</span></span><span><span class="tag">&lt;</span><span class="tag-name">s:property</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"<font color="#ff0000">collection1</font>[#<font color="#003300">status</font>.index][0]"</span><span class="tag">/&gt;<br />
</span></span><span><span class="tag">&lt;</span><span class="tag-name">s:property</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"<font color="#ff0000">collection1</font>[#<font color="#003300">status</font>.index][1]"</span><span class="tag">/&gt;<br />
</span></span><span><span class="tag">&lt;/</span><span class="tag-name">s:iterator</span><span class="tag">&gt;</span><span>&nbsp; <br />
</span></span></p>
</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/256486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2009-02-24 17:50 <a href="http://www.blogjava.net/wangxinsh55/archive/2009/02/24/256486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts AjaxTags</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/11/22/82757.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Wed, 22 Nov 2006 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/11/22/82757.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/82757.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/11/22/82757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/82757.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/82757.html</trackback:ping><description><![CDATA[2005年<strong>Frank W. Zammetti</strong>扩展了Struts的Tag库，使Struts具备了AJAX功能。
<div>      （注：下面的代码引用自<strong>Frank W. Zammetti </strong>的ajaxtags包）</div><div> </div><div>      <strong>Tag库的扩展</strong></div><div>      1、FormTag</div><div>           增加了refAjax属性以及setter和getter方法；</div><div>      2、BaseHandlerTag</div><div>           增加了refAjax属性以及setter和getter方法；</div><div>           同时扩展了prepare×××Events方法，使其加载Ajax属性，如：</div><div>           <font color="#0000ff">if (getOnkeydown() != null) {<br />                  ......</font></div><div><font color="#0000ff">           }<br />           /* Frank W. Zammetti */<br />           else {<br />                  prepareAjax("onkeydown", handlers);<br />           }<br />           /* Frank W. Zammetti */</font></div><div>      3、Struts-Html.tld</div><div>           增加了refAjax属性；</div><div> </div><div>      <strong>应用</strong></div><div>      1、ajax-config.xml</div><div><font color="#0000ff">           ......</font></div><div><font color="#0000ff">           &lt;form ajaxRef="example1"&gt;<br />                &lt;element ajaxRef="button"&gt;<br />                      &lt;event type="onclick"&gt;</font></div><div><font color="#0000ff">                            //发送请求的设置<br />                            &lt;requestHandler type="std:QueryString"&gt;<br />                                 &lt;target&gt;example1.do&lt;/target&gt;<br />                                 &lt;parameter&gt;firstName=firstName,lastName=lastName&lt;/parameter&gt;<br />                            &lt;/requestHandler&gt;</font></div><div><font color="#0000ff">                            //回调函数（方法）及回写区域的设置<br />                            &lt;responseHandler type="std:InnerHTML"&gt;<br />                                 &lt;parameter&gt;example1_resultLayer&lt;/parameter&gt;<br />                            &lt;/responseHandler&gt;<br />                      &lt;/event&gt;<br />                &lt;/element&gt;<br />           &lt;/form&gt;</font></div><div><font color="#0000ff">           ......</font></div><div>      2、struts-config.xml</div><div>           <font color="#0000ff">......</font></div><div><font color="#0000ff">           //与其它Action的区别是：Ajax调用的Action没有input和forward</font></div><div><font color="#0000ff">           &lt;action path="/example1" name="example1Form" scope="request"</font></div><div><font color="#0000ff">                             type="com.omnytex.ajaxtags.Example1Action" /&gt;<br />           ......</font></div><div><font color="#0000ff">           //Ajax Tag Plugin</font></div><div><font color="#0000ff">           &lt;plug-in className="org.apache.struts.taglib.html.ajax.AjaxInit" /&gt;<br /></font><font color="#0000ff">           ......</font></div><div>      3、Jsp客户界面</div><div><font color="#0000ff">           ......</font></div><div><font color="#0000ff">           //对应于ajax-config.xml中的form ajaxRef</font></div><div><font color="#0000ff">           &lt;html:form action="example1" ajaxRef="example1"&gt;<br /></font></div><div><font color="#0000ff">                ......</font></div><div><font color="#0000ff">                //对应于ajax-config.xml中的Element ajaxRef</font></div><div><font color="#0000ff">                &lt;html:button property="button" value="Click to do Ajax!" ajaxRef="button" /&gt;<br />           &lt;/html:form&gt;<br />           Result:&lt;br&gt;</font></div><div><font color="#0000ff">           //对应于ajax-config.xml中的responseHandler<br />           &lt;span id="example1_resultLayer"&gt;&amp;nbsp;&lt;/span&gt;<br />           ......</font></div><div><font color="#0000ff">           //启用Ajax（应该放在Jsp的最后）</font></div><div><font color="#0000ff">           &lt;html:enableAjax /&gt;<br /></font></div><div><font color="#0000ff">           ......</font></div><div>      4、Action</div><div><font color="#0000ff">           ......</font></div><div><font color="#0000ff">           public ActionForward execute( ...... ) throws Exception {</font></div><div><font color="#0000ff">                try {</font></div><div><font color="#0000ff">                    ......</font></div><div><font color="#0000ff">                    //Ajax的Action需要输出内容到out</font></div><div><font color="#0000ff">                    PrintWriter out = response.getWriter();<br />                    out.println(......);<br />                    out.flush();<br />                    out.close();</font></div><div><font color="#0000ff">                } catch (Exception e) {<br />                    System.err.println("Exception in Example1Action.execute(): " + e);<br />                }</font></div><div><font color="#0000ff">                //由于Ajax的Action输出的内容由页面的区域接收，不需要跳转到其它页面</font></div><div><font color="#0000ff">                //所以，返回null</font></div><div><font color="#0000ff">                return null;</font></div><div><font color="#0000ff">           }</font></div><div><font color="#0000ff">           ......</font></div><div> </div><div>      <strong>Struts Ajax Tag工作原理</strong></div><div>      1、Struts启动，加载AjaxInit；</div><div>      2、AjaxInit解析ajax-config.xml；</div><div>      3、Struts加载AjaxEnabled的Jsp；</div><div>      4、Struts-AjaxTag根据Form ajaxRef和elment ajaxRef找到ajax-config的设置；</div><div>      5、输出AjaxEnabled的Html（Tag库加入了Ajax需要的Script，如：XMLHttpRequest）；</div><div>      6、用户输入数据，提交数据（异步模式提交后，用户可以继续其它操作）；</div><div>      7、XMLHttpRequest对象接管提交数据，并向Struts提交do及参数；</div><div>      8、Struts ActionServlet加载FormBean，和相应的Action；</div><div>      9、Struts Action执行相应逻辑，得到返回的数据，通过out输出；</div><div>      10、XMLHttpRequest得到Struts返回的数据；</div><div>      11、XMLHttpRequest调用设置的回调函数（方法），输出数据到指定的区域；</div><img src ="http://www.blogjava.net/wangxinsh55/aggbug/82757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-11-22 14:10 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/11/22/82757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts下拉菜单对应显示(getDirectLabelValueBean )</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/11/16/81439.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 16 Nov 2006 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/11/16/81439.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/81439.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/11/16/81439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/81439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/81439.html</trackback:ping><description><![CDATA[
		<div class="date">2006-10-31 19:55</div>
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt">
												<p>****************************************************************************************************************</p>
												<p>
														<strong>DAO里面如下写：</strong>
												</p>
												<p>package com.sinoconcept.match.dao.impl;</p>
												<p>import java.util.List;</p>
												<p>import org.springframework.dao.DataAccessException;</p>
												<p>import com.sinoconcept.match.dao.DirctDAO;</p>
												<p>public class DirctDAOImpl extends BaseDAOHibernateImpl implements DirctDAO {</p>
												<p> public List loadAll(String className) {<br />  <br />  try {<br />   return this.getHibernateTemplate().loadAll(Class.forName(className));<br />  } catch (DataAccessException e) {<br />   // TODO Auto-generated catch block<br />   e.printStackTrace();<br />  } catch (ClassNotFoundException e) {<br />   // TODO Auto-generated catch block<br />   e.printStackTrace();<br />  }<br />  return null;<br /> }</p>
												<p>}<br /></p>
												<p>***************************************************************************************************************</p>
												<p>
														<strong>service里如下写：</strong>
												</p>
												<p>package com.sinoconcept.match.service.impl;</p>
												<p>import java.lang.reflect.InvocationTargetException;<br />import java.util.Iterator;<br />import java.util.LinkedList;<br />import java.util.List;</p>
												<p>import org.apache.struts.util.LabelValueBean;</p>
												<p>import com.sinoconcept.match.dao.DirctDAO;<br />import com.sinoconcept.match.service.DirctService;</p>
												<p>public class DirctServiceImpl implements DirctService {<br /> private DirctDAO dirctDAO;</p>
												<p> public List getDirect(String dirName) {</p>
												<p>  List result = this.getDir(dirName);<br />  return result;<br /> }</p>
												<p> public List getDirectLabelValueBean(String dirName) {</p>
												<p>  List result = this.getDirLableValueBean(dirName);<br />  return result;<br /> }</p>
												<p> public List getDir(String dirName) {<br />  List result = null;</p>
												<p>  result = dirctDAO.loadAll(dirName);</p>
												<p>  return result;<br /> }</p>
												<p> @SuppressWarnings("unchecked")<br /> public List getDirLableValueBean(String dirName) {<br />  List result = new LinkedList();<br />  List list = getDir(dirName);<br />  Iterator it = list.iterator();<br />  while (it.hasNext()) {<br />   Object obj = it.next();<br />   LabelValueBean lv = new LabelValueBean();<br />   String label = null;<br />   try {<br />    label = obj.getClass().getMethod("getName", new Class[] {})<br />      .invoke(obj, null).toString();<br />   } catch (Exception e) {<br />    try {<br />     label = obj.getClass()<br />       .getMethod("getValue", new Class[] {}).invoke(obj,<br />         null).toString();<br />    } catch (IllegalArgumentException e1) {<br />     // TODO Auto-generated catch block<br />     e1.printStackTrace();<br />    } catch (SecurityException e1) {<br />     // TODO Auto-generated catch block<br />     e1.printStackTrace();<br />    } catch (IllegalAccessException e1) {<br />     // TODO Auto-generated catch block<br />     e1.printStackTrace();<br />    } catch (InvocationTargetException e1) {<br />     // TODO Auto-generated catch block<br />     e1.printStackTrace();<br />    } catch (NoSuchMethodException e1) {<br />     // TODO Auto-generated catch block<br />     e1.printStackTrace();<br />    }<br />   } finally {<br />    if (label == null)<br />     try {<br />      label = label = obj.getClass().getMethod("getValue",<br />        new Class[] {}).invoke(obj, null).toString();<br />     } catch (IllegalArgumentException e) {<br />      // TODO Auto-generated catch block<br />      e.printStackTrace();<br />     } catch (SecurityException e) {<br />      // TODO Auto-generated catch block<br />      e.printStackTrace();<br />     } catch (IllegalAccessException e) {<br />      // TODO Auto-generated catch block<br />      e.printStackTrace();<br />     } catch (InvocationTargetException e) {<br />      // TODO Auto-generated catch block<br />      e.printStackTrace();<br />     } catch (NoSuchMethodException e) {<br />      // TODO Auto-generated catch block<br />      e.printStackTrace();<br />     }<br />   }<br />   lv.setLabel(label);<br />   try {<br />    lv.setValue(obj.getClass().getMethod("getId", new Class[] {})<br />      .invoke(obj, null).toString());<br />   } catch (IllegalArgumentException e) {<br />    // TODO Auto-generated catch block<br />    e.printStackTrace();<br />   } catch (SecurityException e) {<br />    // TODO Auto-generated catch block<br />    e.printStackTrace();<br />   } catch (IllegalAccessException e) {<br />    // TODO Auto-generated catch block<br />    e.printStackTrace();<br />   } catch (InvocationTargetException e) {<br />    // TODO Auto-generated catch block<br />    e.printStackTrace();<br />   } catch (NoSuchMethodException e) {<br />    // TODO Auto-generated catch block<br />    e.printStackTrace();<br />   }<br />   result.add(lv);<br />  }<br />  return result;<br /> }</p>
												<p> public DirctDAO getDirctDAO() {<br />  return dirctDAO;<br /> }</p>
												<p> public void setDirctDAO(DirctDAO dirctDAO) {<br />  this.dirctDAO = dirctDAO;<br /> }</p>
												<p>}<br /></p>
												<p>***********************************************************************************************************************</p>
												<p>Action里面如下设置：</p>
												<p>String status = request.getParameter("status");<br />  if (status == null || status.equals("")) {<br />   status = "0";<br />  }</p>
												<p>List <strong>sttusList </strong>= <strong>dirctService</strong><br />    .<strong>getDirectLabelValueBean("<font color="#ff6600">com.sinoconcept.match.domain.DrStatus</font>");//数据字典表</strong></p>
												<p>
														<strong>//<font color="#ff6600">DrStatus</font> 数据映设文件只要二个字段：private Integer id；private String value;</strong>
												</p>
												<p>manDiaryForm.setStatus(<strong>status</strong>);</p>
												<p>request.setAttribute("<strong>statusList</strong>",<strong> sttusList</strong>);</p>
												<p>****************************************************************************************************************</p>
												<p>页面上如下获得：</p>
												<p>&lt;html:select property="<strong>status</strong>" onchange="sel()"&gt;<br />       &lt;html:optionsCollection name="<strong>statusList</strong>" /&gt;<br />      &lt;/html:select&gt;</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/81439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-11-16 09:44 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/11/16/81439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Validation框架浅尝2</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64197.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64197.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/64197.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/64197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/64197.html</trackback:ping><description><![CDATA[
		<h2 style="MARGIN: 13pt 0cm">
				<font size="2">
						<span lang="EN-US">
								<font face="Arial">javascript</font>
						</span>
						<span style="FONT-FAMILY: 黑体; mso-ascii-font-family: Arial">支持</span>
				</font>
		</h2>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">       </font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">
						<font face="Times New Roman">web</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用中，使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">javascript</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的机会非常多。虽然不少书上提及客户有可能从浏览器关闭</span>
				<span lang="EN-US">
						<font face="Times New Roman">js</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的执行，但是要想完全的不使用它，目前看来好像还不行。比如一些复杂的</span>
				<span lang="EN-US">
						<font face="Times New Roman">UI</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是必须通过</span>
				<span lang="EN-US">
						<font face="Times New Roman">js</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现的（如下拉式菜单等等）。那么</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架支不支持客户端的</span>
				<span lang="EN-US">
						<font face="Times New Roman">js</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">验证呢？</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'">答案是：当然。具体做法是：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">-<span style="FONT: 7pt 'Times New Roman'"><font size="2">          </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在页面</span>
				<span lang="EN-US">
						<font face="Times New Roman">html:form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标签内部添加</span>
				<span lang="EN-US">
						<font face="Times New Roman">onsubmit="return validateEditForm(this);"</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（具体的语法：</span>
				<span lang="EN-US">
						<font face="Times New Roman">validate+</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中定义的</span>
				<span lang="EN-US">
						<font face="Times New Roman">form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的名字）；如：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt">
				<span lang="EN-US" style="FONT-SIZE: 9pt">
						<font face="Times New Roman">
								<font size="2">&lt;html:form action="&lt;%=action%&gt;" method="post"<span style="COLOR: teal"> onsubmit="return validateEditForm(this);</span>"&gt;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></font>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 39pt; TEXT-INDENT: -18pt; mso-list: l3 level1 lfo1; tab-stops: list 39.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">-<span style="FONT: 7pt 'Times New Roman'"><font size="2">          </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</span>
				<span lang="EN-US">
						<font face="Times New Roman">html:form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">内部块中添加：</span>
				<span lang="EN-US">
						<font face="Times New Roman">&lt;html:javascript formName="editForm"/&gt;<o:p></o:p></font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">       </font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如此</span>
				<span lang="EN-US">
						<font face="Times New Roman">2</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">步即可。虽然，</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架非常简单易用，但是还是有需要注意的地方。</span>
		</p>
		<h1 style="MARGIN: 17pt 0cm 16.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">使用注意</font>
				</span>
		</h1>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo7; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">1.<span style="FONT: 7pt 'Times New Roman'"><font size="2">       </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架后，</span>
				<span lang="EN-US">
						<font face="Times New Roman">form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">必须从</span>
				<span lang="EN-US">
						<font face="Times New Roman">ValidatorForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中派生，同时必须在你的</span>
				<span lang="EN-US">
						<font face="Times New Roman">validate</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法中先调用基类的</span>
				<span lang="EN-US">
						<font face="Times New Roman">validate</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法。对于使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">Dyna</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开头的方法来创建</span>
				<span lang="EN-US">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的读者，你也必须改为以</span>
				<span lang="EN-US">
						<font face="Times New Roman">dyna</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开头含有</span>
				<span lang="EN-US">
						<font face="Times New Roman">validator</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo7; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">2.<span style="FONT: 7pt 'Times New Roman'"><font size="2">       </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">注意</span>
				<span lang="EN-US">
						<font face="Times New Roman">DynaValidatorForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US">
						<font face="Times New Roman">ValidatorForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）和</span>
				<span lang="EN-US">
						<font face="Times New Roman">DynaValidatorActionForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US">
						<font face="Times New Roman">ValidatorActionForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）的区别。刚开始时从帮助中没看明白这</span>
				<span lang="EN-US">
						<font face="Times New Roman">2</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">者的区别，后来从网上一篇文章中得到了用法的区别。前者主要的视角是</span>
				<span lang="EN-US" style="COLOR: teal">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，而后者的视角是</span>
				<span lang="EN-US" style="COLOR: teal">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当</span>
				<span lang="EN-US">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">被不同的</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用时，对于不同的</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而言，使用的</span>
				<span lang="EN-US">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的属性集合有大有小。此时如果仍然以</span>
				<span lang="EN-US">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为主体，会造成其他</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的不正常使用。因此，</span>
				<span lang="EN-US">
						<font face="Times New Roman">struts</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中提出了</span>
				<span lang="EN-US">
						<font face="Times New Roman">DynaValidatorActionForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US">
						<font face="Times New Roman">ValidatorActionForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）。此时在</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span>
				<span lang="EN-US">
						<font face="Times New Roman">form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标签的</span>
				<span lang="EN-US">
						<font face="Times New Roman">name</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性改为</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">path</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性，又由于</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中有</span>
				<span lang="EN-US">
						<font face="Times New Roman">attribute</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">
						<font face="Times New Roman">name</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性，</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架就可根据这个</span>
				<span lang="EN-US">
						<font face="Times New Roman">action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">得到对应的</span>
				<span lang="EN-US">
						<font face="Times New Roman">formbean</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。例子：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">&lt;formset&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">  </span>&lt;form name="/createAddress"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">    </span>&lt;field property="city"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">          </span>depends="required"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">      </span>&lt;arg0 key="prompt.city"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">    </span>&lt;/field&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">  </span>&lt;/form&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">  </span>&lt;form name="/editAddress"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">    </span>&lt;field property="state"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">          </span>depends="required"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">      </span>&lt;arg0 key="prompt.state"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">    </span>&lt;/field&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">  </span>&lt;/form&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 91.45pt; mso-para-margin-left: 8.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">&lt;/formset&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo7; tab-stops: list 18.0pt">
				<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
						<span style="mso-list: Ignore">
								<font face="Times New Roman">3.<span style="FONT: 7pt 'Times New Roman'"><font size="2">       </font></span></font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
				<span lang="EN-US">
						<font face="Times New Roman">DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配合。</span>
				<span lang="EN-US">
						<font face="Times New Roman">Struts1.1</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使得相关的</span>
				<span lang="EN-US">
						<font face="Times New Roman">Action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的关系紧密，大大减少了应用中</span>
				<span lang="EN-US">
						<font face="Times New Roman">Action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的个数，但是随之而来也带来了使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">Validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的不便，不能不说是一个遗憾。读者也许认为这种情况可以使用第</span>
				<span lang="EN-US">
						<font face="Times New Roman">2</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">条的解决方案来解决，即采用</span>
				<span lang="EN-US">
						<font face="Times New Roman">DyanValidatorActionForm</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，然后在</span>
				<span lang="EN-US">
						<font face="Times New Roman">Validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中</span>
				<span lang="EN-US">
						<font face="Times New Roman">form</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的名称使用不同的</span>
				<span lang="EN-US">
						<font face="Times New Roman">Actiond</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">path</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，即在</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中使用：</span>
				<span lang="EN-US">
						<font face="Times New Roman">&lt;form name="/user.do?method=doAdd"&gt;</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">    </span>&lt;form name="/user.do?method=doLoad"&gt;</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。然而，在目前的版本中</span>
				<span lang="EN-US">
						<font face="Times New Roman">Validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架并不支持这种辨认。一种绕过这个情况的方法是，针对同一个</span>
				<span lang="EN-US">
						<font face="Times New Roman">Action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现类在</span>
				<span lang="EN-US">
						<font face="Times New Roman">Struts-config.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中定义多个</span>
				<span lang="EN-US">
						<font face="Times New Roman">Action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">path</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，在不需要进行验证的地方将</span>
				<span lang="EN-US">
						<font face="Times New Roman">Action</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span>
				<span lang="EN-US">
						<font face="Times New Roman">validate</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性置为</span>
				<span lang="EN-US">
						<font face="Times New Roman">false</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。即：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">struts-config.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">&lt;action attribute="editForm" path="/<span style="COLOR: teal">user</span>" name="editForm" input="/editUser.jsp"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 17.95pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0; mso-para-margin-left: 1.71gd">
				<span lang="EN-US">
						<font face="Times New Roman">parameter="method" scope="request" type="<span style="COLOR: #ff6600">foxgem.struts.UserDispatchAction</span>"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">
								<span style="mso-spacerun: yes">     </span>validate="true"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 3">               </span>&lt;forward name="load" path="/editUser.jsp"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 3">               </span>&lt;forward name="action" path="/userquery.do?pageId=1"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">&lt;/action&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">
								<font face="Times New Roman">        </font>
						</span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">&lt;action attribute="editForm" path="/<span style="COLOR: teal">loaduser</span>" name="editForm" input="/editUser.jsp"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 2">        </span>
								<span style="mso-spacerun: yes">  </span>parameter="method" scope="request" type="<span style="COLOR: #ff6600">foxgem.struts.UserDispatchAction</span>"</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 2">        </span>
								<span style="mso-spacerun: yes">  </span>validate="false"&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 3">               </span>&lt;forward name="load" path="/editUser.jsp"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<font face="Times New Roman">
								<span style="mso-tab-count: 3">               </span>&lt;forward name="action" path="/userquery.do?pageId=1"/&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
						</span>
						<font face="Times New Roman">&lt;/action&gt;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后在</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件中使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">2</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的方法。</span>
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<h1 style="MARGIN: 17pt 0cm 16.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">结束语</font>
				</span>
		</h1>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">       </font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">总的说来，</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架大大的提高了页面验证的开发效率，更吸引人的是这些验证方法可通过自定义的</span>
				<span lang="EN-US">
						<font face="Times New Roman">validator</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来得到复用。使得这些验证代码更加集中，可维护性得到加强。当然随着项目的进行，</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">
						<font face="Times New Roman">validator-rules.xml</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会随之增长，这部分的维护工作加重了。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">       </font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">同时，由于不能非常好的和</span>
				<span lang="EN-US">
						<font face="Times New Roman">DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一起协作，也使得大量使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的项目不能非常好的使用它。建议大量使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和页面验证非常复杂多变的项目可以暂时按原来的方法来验证，不使用</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">
								<font face="Times New Roman">       </font>
						</span>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">至于</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的其他详细信息，请参见</span>
				<span lang="EN-US">
						<font face="Times New Roman">struts</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的文档，在此不再赘述。</span>
		</p>
		<h1 style="MARGIN: 17pt 0cm 16.5pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">参考资料</font>
				</span>
		</h1>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo8; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'"><font size="2">         </font></span></span>
				</span>
				<span lang="EN-US">
						<a href="http://raibledesigns.com/wiki/Wiki.jsp?page=SecuringDispatchAction">
								<font face="Times New Roman">http://raibledesigns.com/wiki/Wiki.jsp?page=SecuringDispatchAction</font>
						</a>
						<font face="Times New Roman"> DispatchAction</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">与</span>
				<span lang="EN-US">
						<font face="Times New Roman">validation</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架的协作解决方案来源于此。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo8; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'"><font size="2">         </font></span></span>
				</span>
				<span lang="EN-US">
						<a href="http://otn.oracle.com/oramag/oracle/04-jan/o14dev_struts.html">
								<font face="Times New Roman">http://otn.oracle.com/oramag/oracle/04-jan/o14dev_struts.html</font>
						</a>
						<font face="Times New Roman">
								<b style="mso-bidi-font-weight: normal">Check Your Form with Validator</b>
								<o:p>
								</o:p>
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo8; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'"><font size="2">         </font></span></span>
				</span>
				<span lang="EN-US">
						<a href="http://www-900.ibm.com/developerWorks/cn/java/l-struts1-1/">
								<font face="Times New Roman">http://www-900.ibm.com/developerWorks/cn/java/l-struts1-1/</font>
						</a>
						<font face="Times New Roman">
						</font>
				</span>
				<b style="mso-bidi-font-weight: normal">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">深入</span>
						<span lang="EN-US">
								<font face="Times New Roman">Struts 1.1</font>
						</span>
				</b>
				<span lang="EN-US">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo8; tab-stops: list 21.0pt">
				<span lang="EN-US" style="FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings">
						<span style="mso-list: Ignore">n<span style="FONT: 7pt 'Times New Roman'"><font size="2">         </font></span></span>
				</span>
				<span lang="EN-US">
						<a href="http://javaboutique.internet.com/tutorials/Struts11Val/">
								<font face="Times New Roman">http://javaboutique.internet.com/tutorials/Struts11Val/</font>
						</a>
						<font face="Times New Roman">
								<b style="mso-bidi-font-weight: normal">Stepping through the Struts 1.1 Validator<o:p></o:p></b>
						</font>
				</span>
		</p>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/64197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 19:51 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Validator验证器使用指南</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64191.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 11:32:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64191.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/64191.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/64191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/64191.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 作者：								David Winterfeldt				大卫								James Turner				詹姆斯								Rob Leland				罗伯特								翻译：														       								侯思超								验证器：					...&nbsp;&nbsp;<a href='http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64191.html'>阅读全文</a><img src ="http://www.blogjava.net/wangxinsh55/aggbug/64191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 19:32 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>struts、spring、hibernate中文乱码问题解决 </title><link>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64185.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 11:01:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64185.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/64185.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/64185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/64185.html</trackback:ping><description><![CDATA[
		<div class="postText">
				<font size="2">      近日，使用struts 1.1，发现讨厌的中文乱码问题，在form的传送过程和入库时候出现。就我在网络上找的方法罗列如下：<br />（Tomcat 5.0.28+struts 1.1+hibernate 2.1+sqlserver2k）<br />1.直接转编码public static String isoToGB(String src){    <br />String strRet=null;   <br />try{    <br />  strRet = new String(src.getBytes("ISO_8859_1"),"GB2312");  <br />  }catch(Exception e)    {         <br />}    return strRet;<br />}通过一个函数转编码，我没有成功，不知为何！<br /><br />2.过滤filter设置法<br /><br />package yourbean;<br /><br />import javax.servlet.*;<br />import javax.servlet.http.*;<br />import java.io.*;<br />import java.util.*;<br /><br />public class servfilter extends HttpServlet implements Filter {  private FilterConfig filterConfig;  //Handle the passed-in FilterConfig  public void init(FilterConfig filterConfig) {    this.filterConfig = filterConfig;  }  //Process the request/response pair  public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {    try {      request.setCharacterEncoding("GB2312");       ((HttpServletResponse)response).setHeader("Cache-control","no-cache");      response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setHeader("Expires","0");       ((HttpServletResponse)response).setHeader("Pragram","no-cache");      filterChain.doFilter(request, response);    }    catch(ServletException sx) {      filterConfig.getServletContext().log(sx.getMessage());    }    catch(IOException iox) {      filterConfig.getServletContext().log(iox.getMessage());    }  }  //Clean up resources  public void destroy() {  }}下面是一个web.xml文件你用jbuilder写上面的bean的时候会生成一个&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br /><br />&lt;!DOCTYPE web-app    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;<br /><br />&lt;web-app&gt;  &lt;display-name&gt;Welcome to Tomcat&lt;/display-name&gt;  &lt;description&gt;     Welcome to Tomcat  &lt;/description&gt;  &lt;filter&gt;    &lt;filter-name&gt;servfilter&lt;/filter-name&gt;    &lt;filter-class&gt;yourbean.servfilter&lt;/filter-class&gt;  &lt;/filter&gt;  &lt;filter-mapping&gt;    &lt;filter-name&gt;servfilter&lt;/filter-name&gt;    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;  &lt;/filter-mapping&gt;&lt;/web-app&gt;把上面的servfilter编译放在你的web-inf/classes/yourbean/下web.xml放在web-inf/下和classes在一个目录下在每个jsp页面上加上&lt;%@page contentType="text/html;charset=GBK"%&gt;<br /><br />也不是很方便，而且在tomcat也没有成功，继续郁闷！<br /><br />3.我现在使用方法，推荐！！<br /><br />写一个myActionServlet来并覆盖ActionServlet中的process（）方法。<br /><br />  protected void process(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {    /**@todo Override this org.apache.struts.action.ActionServlet method*/    request.setCharacterEncoding("GB2312");//就加着一行一切都解决了    super.process(request, response);  }<br /><br />当然别忘了改一下web.xml里面的配置  &lt;servlet&gt;    &lt;servlet-name&gt;action&lt;/servlet-name&gt;    &lt;servlet-class&gt;strutsdemo.myActionServlet&lt;/servlet-class&gt;    &lt;init-param&gt;      &lt;param-name&gt;debug&lt;/param-name&gt;      &lt;param-value&gt;2&lt;/param-value&gt;    &lt;/init-param&gt;    &lt;init-param&gt;      &lt;param-name&gt;config&lt;/param-name&gt;      &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;    &lt;/init-param&gt;    &lt;load-on-startup&gt;2&lt;/load-on-startup&gt;  &lt;/servlet&gt;<br /><br />改一下servlet-class标签中的内容就可以！<br /><br />真的可以，一劳用yi！<br /><br />具体编码的理论就不说了，google上已经够多了。<br /><br />另外，如果不用struts的话，hibernate也可能碰到中文乱码问题，只要在hibernate.cfg.xml配置中如下：<br /><br />&lt;property name="hibernate.connection.url"&gt;   jdbc:microsoft:sqlserver://Localhost:1433;SelectMethod=cursor;characterEncoding=GBK;DatabaseName=myDatabase.  &lt;/property&gt;<br /><br />characterEncoding=GBK！就可以了。<br /><br /><br /><br />********************************************************************************************************************<br /><h4 class="TextColor1" id="subjcns!E0AAC1F2215635E5!215" style="MARGIN-BOTTOM: 0px">Java/J2EE中文问题终极解决之道 </h4><div id="msgcns!E0AAC1F2215635E5!215"><div>Java中文问题一直困扰着很多初学者，如果了解了Java系统的中文问题原理，我们就可以对中文问题能够采取根本的解决之道。 
<p>　　最古老的解决方案是使用String的字节码转换，这种方案问题是不方便，我们需要破坏对象封装性，进行字节码转换。</p><p>　　还有一种方式是对J2EE容器进行编码设置，如果J2EE应用系统脱离该容器，则会发生乱码，而且指定容器配置不符合J2EE应用和容器分离的原则。</p><p>　　在Java内部运算中，涉及到的所有字符串都会被转化为UTF-8编码来进行运算。那么，在被Java转化之前，字符串是什么样的字符集？ Java总是根据操作系统的默认编码字符集来决定字符串的初始编码，而且Java系统的输入和输出的都是采取操作系统的默认编码。</p><p>　　因此，如果能统一Java系统的输入、输出和操作系统3者的编码字符集合，将能够使Java系统正确处理和显示汉字。这是处理Java系统汉字的一个原则，但是在实际项目中，能够正确抓住和控制住Java系统的输入和输出部分是比较难的。J2EE中，由于涉及到外部浏览器和数据库等，所以中文问题乱码显得非常突出。</p><p>　　J2EE应用程序是运行在J2EE容器中。在这个系统中，输入途径有很多种：一种是通过页面表单打包成请求（request）发往服务器的；第二种是通过数据库读入；还有第3种输入比较复杂，JSP在第一次运行时总是被编译成Servlet，JSP中常常包含中文字符，那么编译使用javac时，Java将根据默认的操作系统编码作为初始编码。除非特别指定，如在Jbuilder/eclipse中可以指定默认的字符集。</p><p>　　输出途径也有几种：第一种是JSP页面的输出。由于JSP页面已经被编译成Servlet，那么在输出时，也将根据操作系统的默认编码来选择输出编码，除非指定输出编码方式；还有输出途径是数据库，将字符串输出到数据库。</p><p>　　由此看来，一个J2EE系统的输入输出是非常复杂，而且是动态变化的，而Java是跨平台运行的，在实际编译和运行中，都可能涉及到不同的操作系统，如果任由Java自由根据操作系统来决定输入输出的编码字符集，这将不可控制地出现乱码。</p><p>　　正是由于Java的跨平台特性，使得字符集问题必须由具体系统来统一解决，所以在一个Java应用系统中，<strong>解决中文乱码的根本办法是明确指定整个应用系统统一字符集。</strong></p><p>　　指定统一字符集时，到底是指定ISO8859_1 、GBK还是UTF-8呢？ </p><p>　　（1）如统一指定为ISO8859_1，因为目前大多数软件都是西方人编制的，他们默认的字符集就是ISO8859_1，包括操作系统Linux和数据库MySQL等。这样，如果指定Jive统一编码为ISO8859_1，那么就有下面3个环节必须把握：</p><p>　　开发和编译代码时指定字符集为ISO8859_1。</p><p>　　运行操作系统的默认编码必须是ISO8859_1，如Linux。</p><p>　　在JSP头部声明：&lt;%@ page contentType="text/html;charset=ISO8859_1" %&gt;。</p><p>　　（2）如果统一指定为GBK中文字符集，上述3个环节同样需要做到，不同的是只能运行在默认编码为GBK的操作系统，如中文Windows。</p><p>　　统一编码为ISO8859_1和GBK虽然带来编制代码的方便，但是各自只能在相应的操作系统上运行。但是也破坏了Java跨平台运行的优越性，只在一定范围内行得通。例如，为了使得GBK编码在linux上运行，设置Linux编码为GBK。</p><p>　　那么有没有一种除了应用系统以外不需要进行任何附加设置的中文编码根本解决方案呢？</p><p>　　将Java/J2EE系统的统一编码定义为UTF-8。UTF-8编码是一种兼容所有语言的编码方式，惟一比较麻烦的就是要找到应用系统的所有出入口，然后使用UTF-8去“结扎”它。</p><p>　　一个J2EE应用系统需要做下列几步工作：</p><ol><li>开发和编译代码时指定字符集为UTF-8。JBuilder和Eclipse都可以在项目属性中设置。 
</li><li>使用过滤器，如果所有请求都经过一个Servlet控制分配器，那么使用Servlet的filter执行语句，将所有来自浏览器的请求（request）转换为UTF-8，因为浏览器发过来的请求包根据浏览器所在的操作系统编码，可能是各种形式编码。关键一句：<br />request.setCharacterEncoding("UTF-8")。<br />网上有此filter的源码，<a href="http://sourceforge.net/projects/jdon/"><u><font color="#0000ff">Jdon框架源码</font></u></a>中com.jdon.util.SetCharacterEncodingFilter<br />需要配置web.xml 激活该Filter。 
</li><li>在JSP头部声明：&lt;%@ page contentType="text/html;charset= UTF-8" %&gt;。 
</li><li>在Jsp的html代码中，声明UTF-8:<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&gt; 
</li><li>设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下：<br />jdbc:mysql://localhost:3306/test?useUnicode=true&amp;amp;characterEncoding=UTF-8<br />一般数据库都可以通过管理设置设定UTF-8 
</li><li>其他和外界交互时能够设定编码时就设定UTF-8，例如读取文件，操作XML等。 </li></ol>　　　　 　　 
<p>　　以上讨论了Java/J2EE的中文问题。如果整个应用系统是从开始进行开发，那么统一指定编码为UTF-8就非常容易做到。如果是在英文源代码基础上二次开发，那么首先要将原来的源代码转换为统一编码UTF-8，那么这种转换工作会带来一定的麻烦。</p>　　 
<p>　　有了这个解决方案，无论使用什么框架Struts 或JSF或未来出现的Java技术，统一成UTF-8的方案都不会出现乱码，笔者以前在Jsp/Servlet时就基于这个原则，后来使用Struts等框架，从未被乱码困扰过，希望本方案公布出来供更多初学者分享，减少Java/J2EE的第一个拦路虎，也避免采取一些临时解决方案。<br /><br /><br />***********************************************************************************************************************<br />  &lt;filter&gt;   <br />  &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;   <br />  &lt;filter-class&gt;   <br />  org.springframework.web.filter.CharacterEncodingFilter   <br />  &lt;/filter-class&gt;   <br />  &lt;init-param&gt;   <br />  &lt;param-name&gt;encoding&lt;/param-name&gt;   <br />  &lt;param-value&gt;UTF-8&lt;/param-value&gt;   <br />  &lt;/init-param&gt;   <br />  &lt;init-param&gt;   <br />  &lt;param-name&gt;forceEncoding&lt;/param-name&gt;   <br />  &lt;param-value&gt;true&lt;/param-value&gt;   <br />  &lt;/init-param&gt;   <br />  &lt;/filter&gt;   <br />    <br />                    &lt;filter-mapping&gt;   <br />  &lt;filter-name&gt;encodingFilter&lt;/filter-name&gt;   <br />  &lt;servlet-name&gt;action&lt;/servlet-name&gt;   <br />  &lt;/filter-mapping&gt; <br /><br /><br />***********************************************************************************************<br /></p><p><strong><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">hibernate</b>+mysql写入数据库的中文是<b style="COLOR: black; BACKGROUND-COLOR: #a0ffff">乱码</b>，怎么解决？？</strong></p><p><br /></p><p><span class="javascript" id="text138575"><b style="COLOR: black; BACKGROUND-COLOR: #ffff66">hibernate</b>.hbm.xml加上属性. <br />&lt;property name=\"connection.useUnicode\"&gt;true&lt;/property&gt; <br />&lt;property name=\"connection.characterEncoding\"&gt;UTF-8&lt;/property&gt; <br /><br />mysql 的驱动用3.0.15以上版本的, <br /><br />加个Filter, 使用UTF-8字符集就可以了, </span></p><p><br /></p><p><span class="javascript"></span> </p><p><br /></p><p><span class="javascript"><font face="Arial">1.使ApplicationResources.properties支持中文<br />建立一个ApplicationResources_ISO.properties文件，把应用程序用的message都写进去，然后在dos下执行这个命令，<br />native2ascii -encoding gb2312 ApplicationResources_ISO.properties ApplicationResources.properties<br />这样就会将ISO编码的ApplicationResources转换成GB2312编码的格式了，同时保存到ApplicationResources.properties.<br />native2ascii这个工具是jdk自带的一个东东，所以如果path都设定正确就可以直接运行了，你可以在$java_home$/bin下找到他。<br />转换后的中文类似于这个样子<br />iso 格式下 ：tj.type=商品车类型<br />gb2312格式下 ：tj.type=\u5546\u54c1\u8f66\u7c7b\u578b<br />然后在struts-config.xml中设置应用这个资源文件<br /> &lt;message-resources parameter=\"com.huahang.tj.ApplicationResources\" key=\"org.apache.struts.action.MESSAGE\" /&gt;<br />开发jsp时在jsp的开头写上&lt;%@ page contentType=\"text/html; charset=gb2312\" %&gt;，将字符集设置成gb2312就可以了。<br /><br />2.使数据库操作支持中文。<br />数据库操作支持中文一直让我比较头痛，但是感谢善解人衣向我推荐了www.chinaxp.org，这个网站是用struts框架开发的，而且<br />开放源码，下载了源码后发现它的中文处理得很好，阅读部分源码，没有发现什么特殊的字符集转换，很纳闷，偶然看到楼上网友<br />留言知道原来servlet可以统一设置字符转换。chinaxp.org就是这么做的。<br />在web.xml中加上<br />  &lt;filter&gt;<br />    &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />    &lt;filter-class&gt;com.huahang.tj.struts.filters.SetCharacterEncodingFilter&lt;/filter-class&gt;<br />    &lt;init-param&gt;<br />      &lt;param-name&gt;encoding&lt;/param-name&gt;<br />      &lt;param-value&gt;GB2312&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />    &lt;init-param&gt;<br />      &lt;param-name&gt;ignore&lt;/param-name&gt;<br />      &lt;param-value&gt;true&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br />  &lt;/filter&gt;<br />  &lt;filter-mapping&gt;<br />    &lt;filter-name&gt;Set Character Encoding&lt;/filter-name&gt;<br />    &lt;servlet-name&gt;action&lt;/servlet-name&gt;<br />  &lt;/filter-mapping&gt;<br />这里会涉及一个bean,源码如下：<br />/*<br /> * XP Forum<br /> *    <br /> * Copyright (c) 2002-2003 RedSoft Group.  All rights reserved.<br /> *<br /> */<br />package com.huahang.tj.struts.filters;<br /><br />import javax.servlet.*;<br />import java.io.IOException;<br /><br />/**<br /> * &lt;p&gt;Filter that sets the character encoding to be used in parsing the<br /> * incoming request, either unconditionally or only if the client did not<br /> * specify a character encoding.  Configuration of this filter is based on<br /> * the following initialization parameters:&lt;/p&gt;<br /> * &lt;ul&gt;<br /> * &lt;li&gt;&lt;strong&gt;encoding&lt;/strong&gt; - The character encoding to be configured<br /> *     for this request, either conditionally or unconditionally based on<br /> *     the &lt;code&gt;ignore&lt;/code&gt; initialization parameter.  This parameter<br /> *     is required, so there is no default.&lt;/li&gt;<br /> * &lt;li&gt;&lt;strong&gt;ignore&lt;/strong&gt; - If set to \"true\", any character encoding<br /> *     specified by the client is ignored, and the value returned by the<br /> *     &lt;code&gt;selectEncoding()&lt;/code&gt; method is set.  If set to \"false,<br /> *     &lt;code&gt;selectEncoding()&lt;/code&gt; is called &lt;strong&gt;only&lt;/strong&gt; if the<br /> *     client has not already specified an encoding.  By default, this<br /> *     parameter is set to \"true\".&lt;/li&gt;<br /> * &lt;/ul&gt;<br /> *<br /> * &lt;p&gt;Although this filter can be used unchanged, it is also easy to<br /> * subclass it and make the &lt;code&gt;selectEncoding()&lt;/code&gt; method more<br /> * intelligent about what encoding to choose, based on characteristics of<br /> * the incoming request (such as the values of the &lt;code&gt;Accept-Language&lt;/code&gt;<br /> * and &lt;code&gt;User-Agent&lt;/code&gt; headers, or a value stashed in the current<br /> * user\'s session.&lt;/p&gt;<br /> *<br /> * @author &lt;a href=\"mailto:jwtronics@yahoo.com\"&gt;John Wong&lt;/a&gt;<br /> *<br /> * @version $Id: SetCharacterEncodingFilter.java,v 1.1 2002/04/10 13:59:27 johnwong Exp $<br /> */<br />public class SetCharacterEncodingFilter implements Filter {<br /><br />    // ----------------------------------------------------- Instance Variables<br /><br /><br />    /**<br />     * The default character encoding to set for requests that pass through<br />     * this filter.<br />     */<br />    protected String encoding = null;<br /><br /><br />    /**<br />     * The filter configuration object we are associated with.  If this value<br />     * is null, this filter instance is not currently configured.<br />     */<br />    protected FilterConfig filterConfig = null;<br /><br /><br />    /**<br />     * Should a character encoding specified by the client be ignored?<br />     */<br />    protected boolean ignore = true;<br /><br /><br />    // --------------------------------------------------------- Public Methods<br /><br /><br />    /**<br />     * Take this filter out of service.<br />     */<br />    public void destroy() {<br /><br />        this.encoding = null;<br />        this.filterConfig = null;<br /><br />    }<br /><br /><br />    /**<br />     * Select and set (if specified) the character encoding to be used to<br />     * interpret request parameters for this request.<br />     *<br />     * @param request The servlet request we are processing<br />     * @param result The servlet response we are creating<br />     * @param chain The filter chain we are processing<br />     *<br />     * @exception IOException if an input/output error occurs<br />     * @exception ServletException if a servlet error occurs<br />     */<br />    public void doFilter(ServletRequest request, ServletResponse response,<br />                         FilterChain chain)<br />    throws IOException, ServletException {<br /><br />        // Conditionally select and set the character encoding to be used<br />        if (ignore || (request.getCharacterEncoding() == null)) {<br />            String encoding = selectEncoding(request);<br />            if (encoding != null)<br />                request.setCharacterEncoding(encoding);<br />        }<br /><br />    // Pass control on to the next filter<br />        chain.doFilter(request, response);<br /><br />    }<br /><br /><br />    /**<br />     * Place this filter into service.<br />     *<br />     * @param filterConfig The filter configuration object<br />     */<br />    public void init(FilterConfig filterConfig) throws ServletException {<br /><br />    this.filterConfig = filterConfig;<br />        this.encoding = filterConfig.getInitParameter(\"encoding\");<br />        String value = filterConfig.getInitParameter(\"ignore\");<br />        if (value == null)<br />            this.ignore = true;<br />        else if (value.equalsIgnoreCase(\"true\"))<br />            this.ignore = true;<br />        else if (value.equalsIgnoreCase(\"yes\"))<br />            this.ignore = true;<br />        else<br />            this.ignore = false;<br /><br />    }<br /><br /><br />    // ------------------------------------------------------ Protected Methods<br /><br /><br />    /**<br />     * Select an appropriate character encoding to be used, based on the<br />     * characteristics of the current request and/or filter initialization<br />     * parameters.  If no character encoding should be set, return<br />     * &lt;code&gt;null&lt;/code&gt;.<br />     * &lt;p&gt;<br />     * The default implementation unconditionally returns the value configured<br />     * by the &lt;strong&gt;encoding&lt;/strong&gt; initialization parameter for this<br />     * filter.<br />     *<br />     * @param request The servlet request we are processing<br />     */<br />    protected String selectEncoding(ServletRequest request) {<br /><br />        return (this.encoding);<br /><br />    }<br /><br />}//EOC<br />加上这个后，在action中就可以直接从form中接收gb2312编码的数据了，返回时自然也是gb2312了。<br />但是这个好像需要servlet 2.2以上的容器<br /><br />综合上面的方法，我解决了struts中的中文问题，现在还没发现新的问题。</font><br /></span></p></div></div></font>
		</div>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/64185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 19:01 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts常见异常信息和解决方法</title><link>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64183.html</link><dc:creator>SIMONE</dc:creator><author>SIMONE</author><pubDate>Thu, 17 Aug 2006 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64183.html</guid><wfw:comment>http://www.blogjava.net/wangxinsh55/comments/64183.html</wfw:comment><comments>http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64183.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangxinsh55/comments/commentRss/64183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangxinsh55/services/trackbacks/64183.html</trackback:ping><description><![CDATA[
		<p>以下所说的struts-config.xml和ApplicationResources.properties等文件名是缺省时使用的，如果你使用了多模块，或指定了不同的资源文件名称，这些名字要做相应的修改。</p>
		<p>
				<strong>1、“No bean found under attribute key XXX”<br /></strong>在struts-config.xml里定义了一个ActionForm，但type属性指定的类不存在，type属性的值应该是Form类的全名。或者是，在Action的定义中，name或attribute属性指定的ActionForm不存在。<br /></p>
		<p>
				<strong>2、“Cannot find bean XXX in any scope”</strong>
				<br />在Action里一般会request.setAttribute()一些对象，然后在转向的jsp文件里（用tag或request.getAttribute()方法）得到这些对象并显示出来。这个异常是说jsp要得到一个对象，但前面的Action里并没有将对象设置到request（也可以是session、servletContext）里。<br />可能是名字错了，请检查jsp里的tag的一般是name属性，或getAttribute()方法的参数值；或者是Action逻辑有问题没有执行setAttribute()方法就先转向了。<br />还有另外一个可能，纯粹是jsp文件的问题，例如&lt;logic:iterate&gt;会指定一个id值，然后在循环里&lt;bean:write&gt;使用这个值作为name的值，如果这两个值不同，也会出现此异常。（都是一个道理，request里没有对应的对象。）<br /></p>
		<p>
				<strong>3、“Missing message for key "XXX"”</strong>
				<br />缺少所需的资源，检查ApplicationResources.properties文件里是否有jsp文件里需要的资源，例如：</p>
		<p> </p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
				<div>
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" />
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">bean:message key</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">msg.name.prompt</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;</span>
				</div>
		</div>
		<p> </p>
		<p>这行代码会找msg.name.prompt资源，如果AppliationResources.properties里没有这个资源就会出现本异常。在使用多模块时，要注意在模块的struts-config-xxx.xml里指定要使用的资源文件名称，否则当然什么资源也找不到，这也是一个很容易犯的错误。</p>
		<p>
				<strong>4、“No getter method for property XXX of bean teacher”</strong>
				<br />这条异常信息说得很明白，jsp里要取一个bean的属性出来，但这个bean并没有这个属性。你应该检查jsp中某个标签的property属性的值。例如下面代码中的cade应该改为code才对：</p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
				<div>
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" />
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">bean:write name</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">teacher</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> property</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">cade</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000"> filter</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">true</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;</span>
				</div>
		</div>
		<br />
		<p>
		</p>
		<p>
				<strong>5、“Cannot find ActionMappings or ActionFormBeans collection”<br /></strong>待解决。</p>
		<p>
				<strong>6、“Cannot retrieve mapping for action XXX”<br /></strong>在.jsp的&lt;form&gt;标签里指定action='/XXX'，但这个Action并未在struts-config.xml里设置过。</p>
		<p>
				<strong>7、HTTP Status 404 - /xxx/xxx.jsp<br /></strong>Forward的path属性指向的jsp页面不存在，请检查路径和模块，对于同一模块中的Action转向，path中不应包含模块名；模块间转向，记住使用contextRelative="true"。</p>
		<p>
				<strong>8、没有任何异常信息，显示空白页面</strong>
				<br />可能是Action里使用的forward与struts-config.xml里定义的forward名称不匹配。<br /></p>
		<p>
				<strong>9、“The element type "XXX" must be terminated by the matching end-tag "XXX".”<br /></strong>这个是struts-config.xml文件的格式错误，仔细检查它是否是良构的xml文件，关于xml文件的格式这里就不赘述了。</p>
		<p>
				<strong>10、“Servlet.init() for servlet action threw exception”</strong>
				<br />一般出现这种异常在后面会显示一个关于ActionServlet的异常堆栈信息，其中指出了异常具体出现在代码的哪一行。我曾经遇到的一次提示如下：</p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
				<div>
						<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" />
						<span style="COLOR: #000000">java.lang.NullPointerException<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" />    at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:</span>
						<span style="COLOR: #000000">1003</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" />    at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:</span>
						<span style="COLOR: #000000">955</span>
						<span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" align="top" /><img src="http://www.cnblogs.com/Images/dot.gif" onload="var image=new Image();image.src=this.src;if(image.width&gt;0 &amp;&amp; image.height&gt;0){if(image.width&gt;=510){this.width=510;this.height=image.height*510/image.width;}}" /></span>
				</div>
		</div>
		<p>
				<br />为解决问题，先下载struts的源码包，然后在ActionServlet.java的第1003行插入断点，并对各变量进行监视。很丢人，我竟然把struts-config.xml文件弄丢了，因此出现了上面的异常，应该是和CVS同步时不小心删除的。</p>
		<p>
				<strong>11、“Resources not defined for Validator”</strong>
				<br />这个是利用Validator插件做验证时可能出现的异常，这时你要检查validation.xml文件，看里面使用的资源是否确实有定义，form的名称是否正确，等等。</p>
		<p>上面这些是我在用Struts做项目时遇到过的问题，其中一些曾困绕我不少时间，其实大部分都是自己不细心造成的。希望这篇文章能对你的开发有所帮助，并欢迎继续补充。<br /><br />12.<span class="top_title">Struts编译中出现“cannot find actionmappings or actionformbeans collection”提示的原因？<br /></span></p>
		<ol>
				<li>Web.xml未初始化问题<br />少了一个&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;<br />这样开始是没有加载这个类，就没有初始化struts-config.xml，所以找不到<br />actionmappings or actionformbeans collection。<br /></li>
				<li>struts-config.xml问题<br /></li>
				<li>jar包不全或版本不对<br />也有可能导致这个问题，从stuts例子里面拷过来就好了。struts1.1自带共10个jar包。<br /></li>
				<li>编译问题<br />有可能Action和Formbean没有编译，也会有这个问题，检查一下有没有对应的class文件就好。class路径不对可能也会导致这个问题。<br /></li>
				<li>版本问题<br />用的servlet容器和struts版本不对或这两个版本协调有问题。<br />在以上几条都不能解决问题的情况下，可能就是版本的问题了，换个高版本试试吧</li>
		</ol>
<img src ="http://www.blogjava.net/wangxinsh55/aggbug/64183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangxinsh55/" target="_blank">SIMONE</a> 2006-08-17 18:57 <a href="http://www.blogjava.net/wangxinsh55/archive/2006/08/17/64183.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>