Struts2 学习笔记9--Struts-Tags--i18n

Struts-Tags
我们可以从功能上将其分为两大类:非UI标志和UI标志
1.    非UI标志
if、elseif和else
描述:
执行基本的条件流转。
参数:
名称    必需    默认      类型                   描述                                                              备注
test    是                   Boolean            决定标志里内容是否显示的表达式                       else标志没有这个参数
id        否                  Object/String    用来标识元素的id。在UI和表单中为HTML的id属性    

iterator
描述:
用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。
参数
名称       必需    默认    类型                    描述
status    否               String                  如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
value     否               Object/String       要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象
id           否               Object/String       用来标识元素的id。在UI和表单中为HTML的id属性
    例:
     <s:iterator value="#request.names" status="stuts">               
                <s:if test="#stuts.odd == true">
                    <li>White <s:property /></li>
                </s:if>
                <s:else>
                    <li style="background-color:gray"><s:property /></li>
                </s:else>
            </s:iterator>

         <!--
            1、此处的空property元素用于获得当前iterator的值
            2、status被设成stuts,在iterator的里面就可以通过#stuts取得IteratorStatus的对象。IteratorStatus类

                 包含当前序号信息,如是否第一个或最后一个,是否为奇数序号。这些信息在我们做格式化的时候,显得非常

                 有用。
         -->

 

 

 

i18n
    描述:
    加载资源包到值堆栈。它可以允许text标志访问任何资源包的信息,而不只当前action相关联的资源包。
    参数:
    Name    Required    Default    Evaluated    Type    Description
    name    true            String      false            String    Name of ressource bundle to use (eg foo/bar

                                                                                                                                  /customBundle)

例子:
   <s:i18n name="myCustomBundle">
   The i18n value for key aaa.bbb.ccc in myCustomBundle is <s:property value="text('aaa.bbb.ccc')" />
   </s:i18n>



Jsp示例:

<li>property: <s:property value="username"/> </li>
        <li>property 取值为字符串: <s:property value="'username'"/> </li>
        <li>property 设定默认值: <s:property value="admin" default="管理员"/> </li>
        <li>property 设定HTML: <s:property value="'<hr/>'" escape="false"/> </li>
        <hr />
        <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>
       
        <hr />
       
        <%--<li>push:<s:set name="myDog" value="new com.bjsxt.struts2.ognl.Dog('oudy')"></s:set></li>
        <li>
        push:<s:push value="#myDog">
            <s:property value="name"/>
        </s:push>
        </li>
        <li>push: <s:property value="name"/></li>
        --%>
       
        <hr />
        <li>bean 定义bean,并使用param来设定新的属性值:
            <s:bean name="com.bjsxt.struts2.tags.Dog" >
                <s:param name="name" value="'pp'"></s:param>
                <s:property value="name"/>
               
            </s:bean>
           
           
        </li>
       
        <li>bean 查看debug情况:
            <s:bean name="com.bjsxt.struts2.tags.Dog" var="myDog">
                <s:param name="name" value="'oudy'"></s:param>
            </s:bean>
            拿出值:
            <s:property value="#myDog.name"/>
           
        </li>
        <hr />
       
        <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>
       
       
        <hr />
       
        <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>
       
        <hr />
       
        <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>
       
        <li>
       
        <s:fielderror fieldName="fielderror.test" theme="simple"></s:fielderror>
       
        </li>

 


总结:
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 enumeration 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>

 

 

 

Struts Theme (主题)设置标签的css样式
在struts.xml中控制theme,默认为xhtml,可以设置为:simple/css_html/ajax

 

可以从struts2-core-2.1.6.jar中org.apache.struts2.default.properties文件中看到这样的配置:

### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml
struts.ui.templateDir=template
#sets the default template type. Either ftl, vm, or jsp
struts.ui.templateSuffix=ftl

 

注意:除了s:fielderror,使用simple就不会修饰其ui标签。
这样只需要对s:fielderror做特殊处理,其他使用simple就可以了。


总结:
定义字节的theme
1.    css(覆盖struts2原来的css)
2.    覆盖单个文件
3.    定义自己的theme
4.    实战:
a)    把所有主题定义为simple
b)    fielderror特殊处理
c)    自己控制其他标签的展现

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值