Struts2部分标签总结
1:?#status.odd?==?true??判断遍历的奇数行
2:?如果一个list里面只有一个属性的话,页面显示直接用<s:property?/>,不管是只存整形或者字符串
国际化:
<s:i18n?name="ApplicationMessages">
?????<s:text?name="HelloWorld"?/>
</s:i18n>
3:?Struts2引入文件????<include?file="struts-default.xml"/>
4:?Action要继承extends?ActionSupport
诸如属性只需要?setter和getter方法就可以直接用属性了
5:映射Action类
<package?name="tutorial"?extends="struts-default">
<action?name="HelloWorld"?class="tutorial.HelloWorld">
?<result>HelloWorld.jsp</result>
????</action>
</package>
Struts?2.0有两个配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。
1、struts.xml用于应用程序相关的配置
2、struts.properties用于Struts?2.0的运行时(Runtime)的配置
Struts?2默认会读取classpath下的struts-default.xml,struts-plugin.xml,struts.xml这三个文件。
6:使用Struts2标记,需要引入文件
<%@taglibprefix="s"uri="/struts-tags"%>
7:常用UI标记:
<s:set?name="name"?value=?"#request.token"/>
<s:iterator?value="#request.names"?status="stuts">?
<s:property?value?="#request.xxx">注意如果List里面只包含一个属性迭代显示<s:property/>
8:常用逻辑标志
<s:if?test="#request.xxx==xxx">?//?</s:if>????<s:elseif></elseif>????<s:else></s:else>
9:include
?<s:include?value="/condition.jsp">
?????<s:param?name="name">Max</s:param>??//?可以引入一个JSP或者Servlet
?</s:include>
10:param
<param?name="color">blue</param><!--字符串方式参数值以String的格式放入statck.-->
<param?name="color"?value="blue"/><!--对象方式该值会以Object的格式放入statck?-->
11:URL
?<a?href='<s:url?value="/i18n.jsp"?/>'>18n</a>
<s:url?id="url"?value="/condition.jsp">?<s:param?name="name"?value?=?"Max"/></s:url>定义url
<s:a?href="%{url}">if\elseif\else</s:a>
更多的UI请见:http://wiki.javascud.org/display/ww2cndoc/TagsWebWork2文档中文化计划(中文)
11:<result?type="velocity">/HelloWorld.vm</result>
激动人心的地方在于它可以把Action输出到velocity,JasperReports和Freemarker等模板,而不仅可以做转发和重定向
12:Action?取消了Form取而代之的是属性的setter和getter方法
还有更高级的是它可以在Action里面定义POJO,页面直接PO.getName().PO.getPassword()之类的操作
13:作用域对象的获取
非Ioc方式获取:ServletActionContext.getRequest()-->request?类似。。。。
Ioc方式获取:定义HttpServletRequest属性setter和getter方法。
14:一个属性如果有setter和getter方法的话可以<s:property?value="message"?escape="false"/>
15:多个对象,同样的POJO提交问题
比如存储产品对象,首先要继承ActionSupport????public?List<Product>?products;
输入:????%{}?表示使用ONGL表达式?,比如像同时提交三个产品的话???
<s:iteratorvalue="new?int[3]"?status="stat">
???????<s:textfieldname="%{'products['+#stat.index+'].name'}"/>??????<s:textfieldname="%{'products['+#stat.index+'].price'}"/>???????<s:textfieldname="%{'products['+#stat.index+'].dateOfProduction'}"/>
</s:iterator>
16:转换错误处理
17:<!--此标志的作用是引入Struts?2.0的常用的Javascript和CSS-->?<s:head/>
18:拦截器:
struts2-all-2.0.1.jar或struts2-core-2.0.1.jar包的struts-default.xml定义啦很多的拦截器
包里面会有冲突
使用默认的拦截器首先<include?file="struts-default.xml"?/>
定义Action的时候<interceptor-ref?name="xx"?/>
19
?<s:iteratorvalue="books.{?#this.price?>?35}">
??????????<s:propertyvalue="title"?/>?-?$<s:propertyvalue="price"?/>
?</s:iterator>
?<s:propertyvalue="books.{?#this.title=='Code?Complete,?Second?Edition'}.{price}[0]"/>