Struts学习笔记_Tags

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

<body>
    <ol>
        <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>
    </ol>

</body>

定义自己的theme

  1. css(覆盖struts2原来的css)
  2. 覆盖单个文件
  3. 定义自己的theme
  4. 实战:

    a)         把所有主题定义为simple

    b)         fielderror特殊处理

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

时间: 2024-10-25 18:06:11

Struts学习笔记_Tags的相关文章

struts学习笔记(1)基本配置

Struts2  学习笔记 吃透最简单的Helloword实例之后 ,接着再一一去研究 请求参数的接收与发送,参数的封闭,校验,result,struts2标签库这些最为核心的东西(其实这些也正是最常用的东西),经过这样的学习,应该领会了一些Struts2的流程,接着再去阅读相关文档去了解Strust2的拦截器设计思想(这叫先使用再体会的学习方法),接着可以做一些针对于自定义拦截器的实现来深化对Struts2的认识.此时,你已经达到企业中使用的级别了,接下来就可以玩一些SSh整合 一.基本配置 

Struts学习笔记

关于Struts的传值问题: 个人总结,我认为共有三种方式: 一.直接通过在action中设置相应的get和set方法 列如:在action中: private String userName; private String userPwd; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public S

Struts学习笔记_拦截器

1.Struts架构图 2.Struts执行过程分析 3.Interceptor拦截器过程模拟 //main.java public class Main { public static void main(String[] args) { new ActionInvocation().invoke(); } } //ActionInvocation .java public class ActionInvocation { List<Interceptor> interceptors = n

Struts学习笔记_声明式异常处理

一,声明式异常处理: 第一步:首先在有可能抛出异常的方法里面throws exception public List<Category> list() throws SQLException { Connection conn = DB.createConn(); String sql = "select * from _category_"; //数据库里面没有这个table,产生异常 PreparedStatement ps = DB.prepare(conn, sql

Struts学习笔记_Result

一,Result type <package name="resultTypes" namespace="/r" extends="struts-default"> <action name="r1"> <result type="dispatcher">/r1.jsp</result> //服务器跳转,为默认项 </action> <act

struts学习笔记(3)---Action中访问ServletAPI获取真实类型的元素

一.源代码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <

Struts学习笔记_OGNL

1,使用域模型时,只有传参user.age=8,才会new一个user对象,当然也可以再action中手动new一个user对象.所以初始化域模型时,可以自己构造,也可以传值,但这时必须有空的构造方法. 2.当用chain跳转到另一个action时,值栈中会有两个action对象 strust.xml <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false&qu

struts学习笔记之十一(异常)

WEB异常处理 传统的web编程的异常模式 try{ 业务代码 }catch(XxxxException){ forward("/a.jsp"); } - Action处理 正常执行结束 1.返回一个String类型的逻辑视图 2.对于String类型的逻辑视图,使用<result name="逻辑视图">物理视图</result> 出现异常 1.返回一个异常对象 2.使用<exception-mapping exception=&qu

Struts学习笔记(三)struts2中获得request、response和session的三种方法

struts2中获得request.response和session的三种方法   (1)非IoC方式 方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象. ActionContext ctx = ActionContext.getContext(); ctx.put("liuwei", "andy"); //request.setAttribute("l