• 沒有找到結果。

数据标签

在文檔中 第一部分: (頁 100-104)

return result;

6.4 非 UI 标签

6.4.1 数据标签

数据标签是标签中特殊的一种,用来设定一些特殊的变量以及值,供页面使用。有些时 候在编写 JSP 页面的时候要用到循环,要使用循环变量,这个时候就需要数据标签来设定一 个循环变量。数据标签具体包含设定变量值的 Set 标签,显示错误的 actionerror 标签等。这 些标签整合了一些常用的数据和集合,以及它们的操作。

表 6-1 数据类标签列表

标签名称 描述

set 设定变量

actionerror 呈现 ActionError

date 呈现日期

actionmessage 呈现 ActionMessage

property 显示值栈里的变量

fielderror 显示字段错误

push 将某值压栈

param 参数化其它标签

Bean 实例化 bean 并放入上下文

下面选取在实际中经常应用到的 property,set,bean,push,date 进行介绍。

 property 标签

属性标签是用来获取 ActionContext 中的属性的一些标签,使用此标签用户能够取得 ActionContext 中的一些成员变量,然后做相应的处理。例如在 Action 里面设定了 name 这样 的成员变量,那么在页面中就可以使用标签获取此成员变量的值。

<s:property value=”#request[‘apple’].price”/><!-获取 Request 对象中的 Apple 类的 price 属性 ->

<s:property value=”#request[‘apple’].weight”/><!-获取 Request 对象中的 Apple 类的 weight 属性->

 set 标签

scope String 否 作用域:application,session,request,page 或 default

id String 否 在作用域内的标签的标识

为了引用某一个变量而输入很长的变量名是很麻烦的,用户可以这样做

<!—为 apple 变量对象设定值为 Request 中的 apple-->

<s:set name=”apple” value=”#request[‘apple’]/>

<s:property value=”#apple.price”/><!—获取 apple 的 price 属性-->

<s:property value=”#apple.weight”/><!—获取 apple 的 weight 属性-->

 bean 标签

可以使用 bean 标签创建简单的 javaBean 并把它压入值栈,这适合于一些比较复杂的应 用场合,通过赋值还可以在 ActionContext 中访问这个 javaBean。

表 6-4 bean 标签的属性

<!--使用 example.user 这个 javaBean,并为其设置 name 属性和 gender 属性-->

<s:bean name=”example.user”>

<s:param name=”name” value=”’Albert’”/>

<s:param name=”gender” value=”’female’”/>

</s:bean>

在这段代码中声明并使用了一个 JavaBean,并且为其设置了相应的值,如果在页面中要使 用这样的模型元素那么使用 Bean 标签是十分可取的做法。

 push 标签

push 标签可以把程序员在 ActionContext 中引用的对象压入值栈。这进一步简化了访问 某一个对象属性的时候需要的操作。不需要每访问一个成员变量都要加上对象名称了。 public class user {

private Date birthdate;

//定义构造函数 public user(){

this.birthdate= new Date();

}

public Date getBirthdate() { return birthdate;

}

public void setBirthdate(Date birthdate) { this.birthdate = birthdate;

}

}

这是一个为页面提供一个日期的 Action,通过定义一个遵循 JavaBean 规范的属性,并 且在 Action 执行过程中初始化它,这样在页面中就可以通过多种手段调用这个日期。页面 源代码如下:

Data.jsp

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>This is the Illustration of Data Tags</title>

</head>

<body>

<%

//定义一个新的 user 对象,并将其放入 session example.user u= new example.user();

session.setAttribute("user",u);

%>

<hr>

<p >

Next is a push Tag example:

//使用 set 标签定义一个 user 变量直接访问刚才保存的 user 对象

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

//将 user 对象压入值栈,以便直接访问属性

<s:push value="#user">

The user's birthday is: <s:property value="birthdate"/><br/>

</s:push>

</p>

<p >

Next is a Bean Counter Example <br>

//引用 counter 类并为其初始化

<s:bean name="org.apache.struts2.util.Counter" id="counter">

<s:param name="last" value="5"/>

</s:bean>

<p>

Next is a Date Tag Example<br>

//使用 Date 标签格式化输出时间

The time now is:<s:date name="#user.birthdate" format="EEE, d MMM yyyy HH:mm:ss Z"/><br>

//当 nice 属性设置为 true 的时候 Date 标签的输出效果

With nice attribute set true,The Tag effect is: <s:date name="#user.birthdate" nice="true"/>

</p>

</body>

</html>

通过综合使用上述数据标签,笔者向大家展示了如果在页面设计的过程中,在页面中插 入日期,通过 date 标签对日期进行各种不同要求的格式化,以期使其符合应用的具体需求。

同时笔者还使用了一个 counter bean 标签,向大家展示了如何在页面中使用一个 bean。如果 配置正确,运行后的结果如图 6-3 所示。

图6-3 数据标签示例的页面

在文檔中 第一部分: (頁 100-104)