WebWork标签库

一、数据标签

       数据标签可以从值栈中获取数据之余,还可以将变量和对象存储于值栈中。

1property标签

       功能:输出OGNL表达式的值

       属性:

l         value

[Object]进行求值的表达式,如果未指定该属性,则将被设定为top

l         default

[String]如果依据value无法得到值,则使用default指定的默认值

l         escape

[Boolean]确定是否将输出的内容进行HTML转义

2set标签

       功能:用于对值栈中的表达式进行求值,并将结果赋给特定作用域中的某个变量名。

       属性:

l         name        

[String]在一个指定的作用域内被赋值的变量名

l         value

[Object]希望用于赋值的表达式

l         scope

[String]可选的值为:applicationsessionrequestpagedefault。默认(default)即action contextset标签将对象放置于action context中。其他4种作用域直接对应于servlet应用程序的4个作用域。

       范例:使用property标签访问存储在session中的User对象的多个字段:

       <ww:property value=”#session[‘user’].username”/>

       <ww:property value=”#session[‘user’].age”/>

       <ww:property value=”#session[‘user’].address”/>

       但每次都重复使用#session[‘user’],更好的做法是定义一个临时变量:

       <ww:set name=”user” value=”#session[‘user’]”/>

       <ww:property value=”#user.username”/>

       <ww:property value=”#user.age”/>

       <ww:property value=”#user.address”/>

3push标签

       功能:将对象的引用压入值栈,当需要围绕单个对象做大量操作的时候,可以将对象压入值栈之后直接对其进行操作。

       属性:

l         value

[Object]需要压入值栈的值所对应的表达式

范例:上例也可以进行如下操作:

<ww:set name="user" value="#session['user']"/>

    <ww:push value="#user">

       <ww:property value="username"/><br>

       <ww:property value="email"/><br>

       <ww:property value="address"/><br>

    </ww:push>

再如:用同一个页面输出不同实例的属性

Test_push_include1.jsp

<%@ taglib prefix="ww" uri="webwork" %>

<html>

    <head>

       <title>Name Page</title>

    </head>

    <body>

    <ww:set name="user1" value="#session['user']"/>

    <ww:push value="#user1">

       <ww:include value="push_include.jsp"/>

    </ww:push>

      

    </body>

</html>

Test_push_include2.jsp

<%@ taglib prefix="ww" uri="webwork" %>

<html>

    <head>

       <title>Name Page</title>

    </head>

    <body>

    <ww:set name="user2" value="#session['user']"/>

    <ww:push value="#user2">

       <jsp:include page="push_include.jsp"/>

    </ww:push>

      

    </body>

</html>

Push_include.jsp

<%@ taglib prefix="ww" uri="webwork" %>

 

<html>

    <head>

       <title>Reg page</title>

    </head>

    <body>

       <H3>Login Info</H3>

           <ww:property value="username"/><br>

           <ww:property value="email"/><br>

           <ww:property value="address"/><br>

    </body>

</html>

 

4bean标签

       功能:创建简单的JavaBean,并将其压入值栈中,在bean标签的起始与结束标记之间,除了可以将JavaBean压入值栈之外,还可以任意地把JavaBean赋值给某个变量,以便让其在action context中能够访问,实现类似set标签的功能。

       属性:

l         name

[String]被创建的bean对应的包和类名

l         id

[String]如果需要在bean标签的范围之外引用bean对象,那么就应当通过id属性设置引用名称

       参数:

              bean标签可以包含param标签,可以通过提供的参数定制标签,设定bean的属性。

       范例:

<ww:bean name="com.example.User" id="user">

    <ww:param name="username">admin</ww:param>

    <ww:param name="email">admin@example.com</ww:param>

    <ww:param name="address">InnerMongolia Huhehot</ww:param>

    <H3>Inner:</H3>

    Username:<ww:property value="username"/><br>

    E-mail:<ww:property value="email"/><br>

    Address:<ww:property value="address"/><br>

</ww:bean>

<H3>Out:</H3>

Username:<ww:property value="#user.username"/><br>

E-Mail:<ww:property value="#user.email"/><br>

Address:<ww:property value="#user.address"/><br>

 

<ww:bean name="com.opensymphony.webwork.util.Counter" id="counter">

    <ww:param name="last" value="100"/>

</ww:bean>

<ww:iterator value="#counter">

    <li><ww:property/></li>

</ww:iterator>

5action标签

       功能:在JSP页面中执行action并访问相应的数据。默认情况下,action标签并不执行actionresult,这样可以让那些可能呈现另外一个不同页面的action能够正常工作。

       属性:

l         name

[String]action

l         namespace

[String]actionnamespace,默认值为当前页面所在的namespace

l         id

[String]引用action bean所需的名称,以便在页面后面的部分引用

l         executeResult

[Boolean]当设置为true时,会执行action对应的result,默认为false

       范例:

<%@ taglib prefix="ww" uri="webwork" %>

<html>

    <head>

       <title>List Page</title>

    </head>

    <body>

       <H2>User Registor:</H2>

       <ww:action name="reglist" executeResult="true"/>

    </body>

</html>

二、控制标签

1iterator标签

       功能:循环遍历任何集合对象,包括CollectionMapEnumerationIteratorarray(数组),同时也可以在action context中定义一个变量,用于确定与当前循环状态相关的基本信息。

       属性:

l         value

[CollectionMapEnumerationIteratorarray]被循环遍历的对象

l         status

[String]如果设置了该属性,IteratorStatus对象就会被放置在action context中。

IteratorStatus源代码:

package com.opensymphony.webwork.views.jsp;

 

public class IteratorStatus {

    protected StatusState state;

 

    public IteratorStatus(StatusState aState) {

        state = aState;

    }

 

    public int getCount() {

        return state.index + 1;

    }

 

    public boolean isEven() {

        return ((state.index + 1) % 2) == 0;

    }

 

    public boolean isFirst() {

        return state.index == 0;

    }

 

    public int getIndex() {

        return state.index;

    }

 

    public boolean isLast() {

        return state.last;

    }

 

    public boolean isOdd() {

        return ((state.index + 1) % 2) == 1;

    }

 

    public int modulus(int operand) {

        return (state.index + 1) % operand;

    }

 

    public static class StatusState {

        boolean last = false;

        int index = 0;

 

        public void setLast(boolean isLast) {

            last = isLast;

        }

 

        public void next() {

            index++;

        }

    }

}

       范例:使用IteratorStatus

<%@ taglib prefix="ww" uri="webwork" %>

<html>

    <head>

       <title>List Page</title>

    </head>

    <body>

       <table>

       <ww:iterator value="users" status="rowstatus">  

           <ww:if test="#rowstatus.even">        

           <tr>

              <td><ww:property value="username"/></td>

              <td><ww:property value="email"/></td>

              <td><ww:property value="address"/></td>  

           </tr> 

           </ww:if>

           <ww:else>

           <tr>

              <td><font color="red"><ww:property value="username"/></font></td>

              <td><font color="red"><ww:property value="email"/></font></td>

              <td><font color="red"><ww:property value="address"/></font></td>  

           </tr>

           </ww:else>   

       </ww:iterator>

       </table>

    </body>

</html>

2if标签和else标签

       功能:控制输出呈现,可以单独使用if标签,也可以结合elseif标签和else标签一起使用,else标签没有任何属性,而ifelseif只有一个属性test

       属性:

l         test

[Boolean]用于求值并返回truefalse的布尔表达式。

       范例:

<%@ taglib prefix="ww" uri="webwork" %>

<html>

    <head>

       <title>List Page</title>

    </head>

    <body>

       <table>

       <ww:iterator value="users" status="rowstatus">  

           <ww:if test="#rowstatus.first">       

           <tr bgcolor="blue">

              <td><ww:property value="username"/></td>

              <td><ww:property value="email"/></td>

              <td><ww:property value="address"/></td>  

           </tr> 

           </ww:if>

           <ww:elseif test="#rowstatus.last">

           <tr bgcolor="yellow">

              <td><ww:property value="username"/></td>

              <td><ww:property value="email"/></td>

              <td><ww:property value="address"/></td>  

           </tr>

           </ww:elseif>

           <ww:elseif test="#rowstatus.odd">

           <tr bgcolor="green">

              <td><ww:property value="username"/></font></td>

              <td><ww:property value="email"/></td>

              <td><ww:property value="address"/></td>  

           </tr>

           </ww:elseif> 

           <ww:else>

           <tr bgcolor="gray">

              <td><ww:property value="username"/></font></td>

              <td><ww:property value="email"/></td>

              <td><ww:property value="address"/></td>  

           </tr>

           </ww:else>   

       </ww:iterator>

    </body>

</html>

三、杂项标签

1include标签

       功能:可参数化的include标签,与WebWork集成在一起提供更多的高级特性。

       属性:

l         value

[String]页面名称、actionservlet或任何可引用的URL

       优点:

ü         提供对值栈的访问能力

ü         提供更具扩展性的参数模型

如:包含一个页面,同时利用值栈对该页面中使用了%{…}符号的内容进行求值。也可以使用<ww:param>标签对include标签增加参数,而param标签同样以来于值栈,比<jsp:include>标签更易于使用。

2URL标签

       功能:生成使用相对路径或者绝对路径的URL,处理参数,以及对URL进行编码,以便让没有启用cookie的浏览器使用。

       属性:

l         value

[String]基本的URL,用来生成URL的基本信息,默认值为生成当前页面的URL

l         includeParams

[String]allgetnone中选择参数,默认为get。在默认情况下,WebWork包含当前页面的所有查询字符串;如果不希望包含任何参数,那么将该属性设置为none;可以通过设置为all,使得所有参数都可用于URL的生成,包括通过post提交的参数。

l         id

[String]如果指定了该属性,那么URL将不会输出,而是会保存于action context,以作后用。

l         includeContext

[Boolean]如果为true,那么生成的URL前面会加上应用程序所在的上下文(context)路径,默认为true

l         encode

[Boolean]如果访问者并没有启用cookie,那么将会在URL中增加session ID

l         scheme

[String]可以指定协议,默认为当前的设置(HTTP或者HTTPS)。WebWork使用默认的80端口监听HTTP请求,而使用443端口监听HTTPS端口,如果要更改,可以在webwork.properties文件中重新定义。

webwork.url.http.port = 8080

webwork.url.https.port = 8081

       范例:

URL标签

结果

<ww:url/>

/7_tag_url/

<ww:url scheme="ftp"/>

ftp://127.0.0.1/7_tag_url/

<ww:url value="www.sina.com.cn"/>

www.sina.com.cn

<ww:url value="www.google.cn/search">

    <ww:param name="q">java</ww:param>

</ww:url>

www.google.cn/search?q=java

<ww:url value="http://iask.com/s" id="java">

    <ww:param name="k">java</ww:param>

</ww:url>

<a href="<ww:property value="#java"/>">

search java in sina

</a>

<a href="http://iask.com/s?k=java">

search java in sina

</a>

<ww:url value="/test.html" id="test"/>

    <a href="

<ww:property value="#test"/>">

Test1

</a>

<a href="/7_tag_url/test.html">Test1</a>

 

<ww:url value="/test.html" id="test" includeContext="false"/>

    <a href="

<ww:property value="#test"/>">

Test1

</a>

<a href="/test.html">Test1</a>

3i18ntext标签

       国际化支持

Ø         text标签

功能:显示特定语言的文本,是基于键查询的标签

属性:

l         name

[String]用于在ResourceBundle中进行查找的键。

l         id

[String]如果设置了该属性,则文本内容将会存储于action context中,可以通过属性值的名称进行引用。

l         value0

[Object]参数1

l         value1

[Object]参数2

l         value2

[Object]参数3

l         value3

[Object]参数4

Ø         i18n标签

功能:将资源包的内容压入栈中,可以在标签内部访问与资源包相关的i18n的资源。

属性:

l         name

[String]资源包的名称。

4param标签

       功能:对其他标签提供作用。

       属性:

l         name

[String]应用于父标签的参数名称

l         value

[Object]一个OGNL表达式,结果为被应用的值。

       范例:

       <ww:param name="username" value="'admin'"/>

       <ww:param name="username">admin</ww:param>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值