`
sxw7362693
  • 浏览: 60671 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

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)    自己控制其他标签的展现

 

 

 

分享到:
评论

相关推荐

    struts2学习笔记(完美总结)——转自OPEN经验库

    本文将深入探讨Struts2的核心概念,包括Action、Result、配置文件、OGNL与ValueStack、Tags以及项目中的关键实践。 **一、Action** Action是Struts2中处理业务逻辑的核心组件,它是实现了`...

    Struts2学习笔记

    ### Struts2学习笔记知识点概览 #### 一、Struts的作用 - **核心功能**:Struts2框架的核心功能之一就是将业务逻辑与展示层分离,实现MVC(Model-View-Controller)架构模式。这有助于提高代码的可维护性、可扩展...

    Struts2 学习笔记

    04 Struts2-Tags 28 Struts2标签目录 28 一、 property标签 28 二、 set标签 29 三、 bean标签 29 四、 标签-少使用 29 五、 If elseif else 30 六、 Iterator标签 31 七、 Theme 31 05设计约定(编码规定) 32 06 ...

    struts2学习笔记

    9. **国际化(Internationalization, i18n)**: Struts2支持多语言环境,可以通过资源包(Properties文件)来实现界面文本的国际化。 10. **结果类型(Result Types)**: 结果类型定义了请求完成后如何处理,例如...

    Struts学习笔记.txt

    ### Struts2学习笔记 #### 一、Struts2简介 Struts2是Apache基金会下的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Web应用程序框架。Struts2提供了丰富的功能来简化Java Web应用的开发过程...

    Struts 1.3.8 学习笔记(二)

    Struts 1.3.8 版本中的一个关键改进是对国际化(i18n)支持的增强,允许开发者轻松地为应用添加多语言支持。这通过定义资源文件(如 messages.properties)来实现,其中包含了各种语言环境下的文本信息。 此外,...

    Struts 1.3.8 学习笔记(三)

    9. ** strutstags.tld 文件**:这是Struts的标签库描述符文件,定义了所有可用的JSP标签及其属性。 10. **异常处理**:Struts允许通过配置文件定义全局和特定Action的异常处理策略,提高程序的健壮性。 在实际应用...

    struts2基本运行环境配置方法

    ### Struts2基本运行环境配置方法 #### 一、引言 在Java Web开发领域,Struts2框架因其简洁的设计模式、丰富的插件支持以及高度的可扩展性而备受开发者青睐。本文将详细介绍如何在MyEclipse环境中配置Struts2的基本...

    struts2标签学习笔记

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以更加便捷地构建视图层。在本文中,我们将深入探讨Struts2的标签库,并特别关注单选框和多选框的使用。 首先,引入Struts2的标签库至关重要。在...

    struts学习笔记(4)

    ### Struts 学习笔记(4):深入理解 OGNL 表达式与 Struts2 标签 #### 一、OGNL 表达式简介 **OGNL**(Object Graph Navigation Language)是一种功能强大的表达式语言,在 Struts2 框架中扮演着非常重要的角色。...

    传智播客struts2框架2016版视频教程笔记

    &lt;constant name="struts.i18n.encoding" value="utf-8"/&gt; ``` #### 分模块开发 - 可以通过在主配置文件中引入其他配置文件来实现分模块开发。 - **示例**: ```xml &lt;include file="com/htt/frame/user/struts_user...

    良葛格学习笔记Struts.rar

    在"良葛格学习笔记Struts.rar"压缩包中,我们可以期待找到关于Struts框架的详细学习资料,包括理论概念、实践示例以及可能的代码片段。 Struts框架的核心组件包括: 1. **ActionServlet**:作为Struts框架的入口点...

    struts学习笔记

    同时,需要在JSP页面中导入相应的Taglib,如`&lt;%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%&gt;`。 4. **Struts与JSTL结合**: Struts标签和JSTL标签可以协同工作,提供更强大的页面逻辑。例如...

    Struts1.x常用的开发包,需要学习struts1.x朋友可以下载

    9. **Plug-in架构**:Struts1.x具有强大的插件扩展能力,允许开发者添加自定义的拦截器(Interceptor)、标签库等,以满足项目特殊需求。 10. **预定义的结果类型**:Struts1.x定义了一些预设的Action结果类型,如...

    strtus2帮助文档 整合文档 struts2强大的标签功能整合

    - 在`struts2标签配置.txt`文件中,可能包含了如何在JSP页面中引入Struts2标签库的配置,例如`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`,这里的`s`是前缀,`/struts-tags`是URI,用于指向标签库的位置。...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    struts2教程

    - 引用Struts标签库:`&lt;%@taglib prefix="s" uri="/struts-tags"%&gt;`使得在JSP页面中可以使用Struts2提供的标签。 - Bean配置:定义Bean对象,包括`class`(类名),`type`(接口规范),`name`(Bean的名称),`...

    Java/JavaEE 学习笔记

    Struts学习笔记...............263 Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data ...

Global site tag (gtag.js) - Google Analytics