struts2 标签

来源:互联网 发布:郎咸平 空姐 知乎 编辑:程序博客网 时间:2024/05/18 00:41

标签目录

1、  通用标签

a)    Property

b)    Set

              i.      默认为action scope,会将值放入request和ActionContext中

             ii.      page/request/session/application

c)    bean

d)    include对中文文件支持的问题,不建议使用,如需要包含,改用jsp包含

e)    param

f)    debug

2、  控制标签

a)    If elseif else

b)    Iterator

              i.      collections map enumerateon iterator array

c)    subset

3、  UI标签

a)    Theme

              i.      Simple xhtml(默认) css_xhtml ajax

4、  AJAX标签

a)    补充

5、  $ # % 的区别

a)    $ 用于i18n和Struts配置文件

b)    # 取得ActionContext的值

c)    % 将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用

              i.      参考<s:property>和<s:include>

 

一、 property标签

格式:<s:property value=””default=”” escape=”true|false”/>

     如果value中的内容为object,则Struts2都会把它解析成ognl表达式

     如果里面需要表示为字符串,则需要将内容用单引号括起来

1、  利用ognl表达式取值(例如:取值堆栈中的username值)

<s:property value="username"/>

2、  取值为字符串

需要将内容用单引号括起来

<s:property value="’username’"/>

3、  设置默认值-default

如果一个对象值取不到,则可以使用default设置一个默认值。

<s:property value="admin" default=”管理员/>

4、  设定HTML-escape

是否设置返回值为HTML原代码样式

true:解析返回值的html代码 false:原封不动返回值

<s:property value="'<hr/>'escape="false"/>

 

 

 

 

二、 set标签

注:var 用于设定变量名

     value 变量值(可以是ognl表达式),也可以是字符串

         scope 就是的作用范围 request session page application action(默认)

 

<li>set 设定adminName值(默认为request  ActionContext<s:set var="adminName"value="username" /></li>

      

<li>set request取值<s:property value="#request.adminName" /></li>

<li>set ActionContext取值<s:property value="#adminName" /></li>

      

<%--<li>set 设定范围: <s:set name="adminPassword" value="password" scope="page"/></li>

<li>set 从相应范围取值: <%=pageContext.getAttribute("adminPassword") %></li>

       --%>

<li>set 设定var,范围为ActionContext: <s:set var="adminPassword" value="password"scope="session"/></li>

<li>set 使用#取值<s:property value="#adminPassword"/> </li>

<li>set 从相应范围取值<s:property value="#session.adminPassword"/> </li>

 

三、 bean标签

    定义bean,并使用param来设定新的属性值

     <s:bean name="com.bjsxt.struts2.tags.Dog" >

              <s:param name="name" value="'pp'"></s:param>

    </s:bean>

定义bean,并使用一个变量(var)来接受创建的这个bean,取出值来

<s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">

               <s:param name="name" value="'oudy'"></s:param>

</s:bean>

拿出值:因为在actionContext中,所以使用#

<s:property value="#myDog.name"/>

 

<s:bean>不指定var时,则对象相关属性会在值栈中。如果需要访问,则只能在<s:bean>标签内访问。

<s:bean>标签结束后,则值栈就不存在这个对象了。

     <s:bean name="com.bjsxt.struts2.tags.Dog" >

              <s:param name="name" value="'pp'"></s:param>

              <s:property value="name"/>

    </s:bean>

 

四、 <include>标签-少使用

包含文件

<li>include _include1.html 包含静态英文文件

       <s:include value="/_include1.html"></s:include>

       </li>

      

       <li>include _include2.html 包含静态中文文件

       <s:include value="/_include2.html"></s:include>

       </li>

      

       <li>include _include1.html 包含静态英文文件,说明%用法

       <s:set var="incPage" value="%{'/_include1.html'}" />

       <s:include value="%{#incPage}"></s:include>

    </li>

%{xxx} 强制将xxx内容转换成OGNL表达式

<-- One: -->
<s:include value="myJsp.jsp" />
<-- Two: -->
<s:include value="myJsp.jsp">
   <s:param name="param1" value="value2" />
   <s:param name="param2" value="value2" />
</s:include>
<-- Three: -->
<s:include value="myJsp.jsp">
   <s:param name="param1">value1</s:param>
   <s:param name="param2">value2</s:param>
</s:include>

五、 If elseif else

<li>if elseif else:

       age = <s:property value="#parameters.age[0]" /> <br />

       <s:set var="age" value="#parameters.age[0]" />

       <s:if test="#age < 0">wrong age!</s:if>

       <s:elseif test="#parameters.age[0] < 20">too young!</s:elseif>

       <s:else>yeah!</s:else><br />

      

       <s:if test="#parameters.aaa == null">null</s:if>

</li>

 

<s:if test="%{false}">
    <div>Will Not Be Executed</div>
</s:if>
<s:elseif test="%{true}">
    <div>Will Be Executed</div>
</s:elseif>
<s:else>
    <div>Will Not Be Executed</div>

</s:else>

 

 

 

 

六、 Iterator标签

<li>遍历集合:<br />

       <s:iterator value="{1, 2, 3}" >

           <s:property/> |      <!—不需要写其它的,就可以输出数组内的值-->

       </s:iterator>

       </li>

       <li>自定义变量:<br />

       <s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">

           <s:property value="#x.toUpperCase()"/> |

       </s:iterator>

       </li>

       <li>使用status:<br />

       <s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">

           <s:property/> |

           遍历过的元素总数:<s:property value="#status.count"/> |

           遍历过的元素索引:<s:property value="#status.index"/> |

           当前是偶数?:<s:property value="#status.even"/> |

           当前是奇数?:<s:property value="#status.odd"/> |

           是第一个元素吗?:<s:property value="#status.first"/> |

           是最后一个元素吗?:<s:property value="#status.last"/>

           <br />

       </s:iterator>

      

       </li>

      

       <li>

       <s:iterator value="#{1:'a', 2:'b', 3:'c'}>

           <s:property value="key"/> | <s:property value="value"/> <br />

       </s:iterator>

       </li>

      

       <li>

       <s:iterator value="#{1:'a', 2:'b', 3:'c'}var="x">

           <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />

       </s:iterator>

       </li>

 

七、 Theme

1、  css(覆盖Struts2原来的css)

2、  覆盖单个文件

3、  定义自己的theme

4、  实战

a)    把所有主题定义为simple

b)    Fielderror特殊处理

c)    自己控制其他标签的展现


参考链接:

http://blog.csdn.net/liushuai_ly/article/details/7935291#t9

http://blog.csdn.net/zxl315/article/details/2886456
官方网站:http://struts.apache.org/development/2.x/docs/guides.html

struts实战

0 0