﻿<?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-bboss-文章分类-Struts2</title><link>http://www.blogjava.net/bboss/category/42476.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 04 Nov 2009 14:02:41 GMT</lastBuildDate><pubDate>Wed, 04 Nov 2009 14:02:41 GMT</pubDate><ttl>60</ttl><item><title>strust2实践总结</title><link>http://www.blogjava.net/bboss/articles/301080.html</link><dc:creator>爱思派</dc:creator><author>爱思派</author><pubDate>Wed, 04 Nov 2009 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/bboss/articles/301080.html</guid><wfw:comment>http://www.blogjava.net/bboss/comments/301080.html</wfw:comment><comments>http://www.blogjava.net/bboss/articles/301080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bboss/comments/commentRss/301080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bboss/services/trackbacks/301080.html</trackback:ping><description><![CDATA[1：在action中定义的变量，在jsp页面中显示用：&lt;s:property value="变量名" /&gt; <br />
<br />
2：在页面中实现自动增加的序号用iterator的statuts的index属性 eg： <br />
<br />
&lt;s:iterator value="#request.inOutAccountList" id="data" status="listStat"&gt; <br />
<br />
&lt;s:property value="#listStat.index+1"/&gt; <br />
<br />
&lt;/s:iterator&gt; <br />
<br />
3:在action类中取得request和session对象的方法 <br />
<br />
Map session&nbsp; = ActionContext.getContext().getSession(); <br />
HttpServletRequest&nbsp; request = ServletActionContext.getRequest (); <br />
<br />
设置它们的值的方法 <br />
<br />
session.put("operation", "add"); <br />
request.setAttribute("name", name); <br />
<br />
页面中取得它们的值： <br />
<br />
&lt;s:property value="#session.operation"/&gt; <br />
&lt;s:property value="#request.name"/&gt; <br />
<br />
4:页面中奇偶行样式不一样的控制方法： <br />
<br />
&lt;tr class="&lt;s:if test='#listStat.odd == true '&gt;tableStyle-tr1&lt;/s:if&gt;&lt;s:else&gt;tableStyle-tr2&lt;/s:else&gt;" &gt; <br />
<br />
5:单选框和复选框的使用方法 <br />
<br />
1):可以设置默认选中值，注意list的值的设置，通过这种方式使key和value不一样，这种方法比较常用(checkboxlist or radio) <br />
<br />
&lt;s:radio name="uncarInsPolicy.policyStateCode" <br />
list="#{'5':'通过' , '2':'不通过'}" <br />
&nbsp; listKey="key" <br />
&nbsp; listValue="value" <br />
value='5' <br />
/&gt; <br />
<br />
2):这里的key和value的值是一样的(checkboxlist or radio) <br />
<br />
&lt;s:checkboxlist <br />
list="{'Red', 'Blue', 'Green'}" <br />
name="favoriteColor"/&gt; <br />
<br />
6:struts2 中的标签会生成类似由&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;构成的字串（具体什么标签生成什么，可以查看生成后的页面的源代码）如果不限制这些多余代码的生成，页面将变得无法控制，所以一般我们是不希望它生成多余的代码的，具体的设置方法如果，在struts.xml中统一配置 <br />
&lt;constant name="struts.ui.theme" value="simple"/&gt;加上该句即可 <br />
也可以通过在页面中将tag的theme属性设为"simple"取消其默认的表格布局 <br />
不过最好是：自定义一个theme，并将其设为默认应用到整个站点，如此一来就可以得到统一的站点风格 <br />
<br />
7：jsp页面中格式化日期的方法 <br />
<br />
&lt;s:date name="unCarInsModificationInfo.createTime" format="yyyy-MM-dd" nice="false"/&gt;这样就可以将日期格式化为yyyy－MM－dd的形式 <br />
<br />
8：默认情况下，当请求action发生时，Struts运行时（Runtime）根据struts.xml里的Action映射集(Mapping)，实例化action对应的类，并调用其execute方法。当然，我们可以通过以下两种方法改变这种默认调用 <br />
<br />
1）在classes/sturts.xml中新建Action，并指明其调用的方法 <br />
比如想调用action类中的 <br />
<br />
public String aliasAction() { <br />
&nbsp;&nbsp;&nbsp; message ="自定义Action调用方法"; <br />
&nbsp;&nbsp;&nbsp; return SUCCESS; <br />
} <br />
则在classes/sturts.xml中加入下面代码： <br />
&lt;action name="AliasHelloWorld" class="tutorial.HelloWorld" method="aliasAction"&gt; <br />
&nbsp;&nbsp; &lt;result&gt;/HelloWorld.jsp&lt;/result&gt; <br />
&lt;/action&gt; <br />
既可用action名调用该方法了 <br />
<br />
2）（比较常用） <br />
<br />
访问Action时，在Action名后加上&#8220;!xxx&#8221;（xxx为方法名）。 <br />
<br />
9：Struts 2.0有两个配置文件，struts.xml和struts.properties都是放在WEB-INF/classes/下。 <br />
struts.xml用于应用程序相关的配置 <br />
struts.properties用于Struts 2.0的运行时（Runtime）的配置 <br />
<br />
10:在action类中取得web下某一文件夹物理路径（绝对路径）的方法 <br />
filePath = ServletActionContext.getServletContext().getRealPath("/upLoadFiles") <br />
<br />
11：要想返回的页面不是一个直接JSP页面而是要先通过返回action中的方法读取相应的数据再返回到jsp页面，有两种方法 <br />
<br />
1）在struts.xml中这么设置 <br />
<br />
&lt;result name="list" type="redirect-action"&gt;sysmanage/UserBaseInfoAction!findUserBaseInfo.action&lt;/result&gt; <br />
<br />
2）在action中返回时直接调用这个方法即可 <br />
<br />
return findList（）； <br />
<br />
12：设置checkboxlist中默认值的方法 <br />
<br />
&lt;s:checkboxlist name="skills1" <br />
&nbsp;&nbsp;&nbsp;&nbsp; ="Skills 1" <br />
&nbsp;&nbsp;&nbsp;&nbsp; list="{ 'Java', '.Net', 'RoR', 'PHP' }" <br />
&nbsp;&nbsp;&nbsp;&nbsp; value="{ 'Java', '.Net' }" /&gt; <br />
&lt;s:checkboxlist name="skills2" <br />
&nbsp;&nbsp;&nbsp; label="Skills 2" <br />
&nbsp;&nbsp;&nbsp; list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }" <br />
&nbsp;&nbsp;&nbsp; listKey="key" <br />
&nbsp;&nbsp;&nbsp; listValue="value" <br />
&nbsp;&nbsp;&nbsp; value="{ 1, 2, 3 }"/&gt; <br />
<br />
13：二级级连下拉框 <br />
<br />
&lt;s:set name="foobar" <br />
&nbsp;&nbsp; value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" /&gt; <br />
&nbsp; &lt;s:doubleselect list="#foobar.keySet()" <br />
&nbsp;&nbsp;&nbsp;&nbsp; doubleName="technology" <br />
&nbsp;&nbsp;&nbsp;&nbsp; doubleList="#foobar[top]" <br />
&nbsp;&nbsp;&nbsp;&nbsp; label="Technology" /&gt; <br />
<br />
14:在页面中取出list对象中的属性值 <br />
&lt;s:iterator value="#request.unCarInsList" id="data" status="listStat"&gt; <br />
&lt;tr class="&lt;s:if test="#request.operRecdTag!=null &amp;&amp; #request.operRecdTag==#request.policyCode"&gt;tableStyle-highLight&lt;/s:if&gt;&lt;s:elseif test='#listStat.odd == true '&gt;tableStyle-tr1&lt;/s:elseif&gt;&lt;s:else&gt;tableStyle-tr2&lt;/s:else&gt;" onmouseover="switchClass(this)" onmouseout="switchClass(this)"&gt; <br />
&lt;td align="center" nowrap="nowrap"&gt;&lt;input type="checkbox" name="chkPolicyCode" value='&lt;s:property value="policyCode"/&gt;' /&gt;&lt;/td&gt; <br />
&lt;td align="center" nowrap="nowrap"&gt; <br />
&lt;s:property value="#listStat.index+1"/&gt; <br />
&lt;/td&gt; <br />
&lt;td align="center" nowrap="nowrap"&gt; <br />
&lt;a href="javascript:showDetail('&lt;s:property value="policyCode"/&gt;')"&gt;&lt;s:property value="policyCode" /&gt;&lt;/a&gt; <br />
&lt;/td&gt; <br />
&lt;/tr&gt; <br />
&lt;/s:iterator&gt; <br />
<img src ="http://www.blogjava.net/bboss/aggbug/301080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bboss/" target="_blank">爱思派</a> 2009-11-04 15:57 <a href="http://www.blogjava.net/bboss/articles/301080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>