Struts 2 数据标签教程
2010-01-14 13:46
393 查看
Struts 2 数据标签例题
在这个例子中我们将学习怎样使用property标签,set标签,push标签。这些标签是Struts 2的数据标签。之前我们已经了解到什么是动作上下文(ActionContent)和值栈(ValueStack)。
动作上下文(ActionContext)是一个全局存储区域。它保存着处理请求关联的所有数据。
动作上下文(ActionContext)是单线程的。这确保了Struts 2的动作(action)的线程安全。
值栈(ValueStack)是动作上下文(ActionContext)的一部分。Struts 2的动作(action)驻留在值栈(ValueStack)中。
Property标签
property标签被用来从值栈(ValueStack)或在动作上下文(ActionContext)中的其他对象,如application或seesion中取得对象。下面我们来看看如何使用property标签。
下面是AlbumInfoAction类:
下面是Artist类:
让我们来看看怎么在jsp页面通过property标签访问动作(action)类属性。以下是albumDetails.jsp页面的代码:
我们可以看到title是AlbumInfoAction的属性,所以可以直接访问它。但是name和bio是Artist类的属性,所以我们需要更深一步的访问,我们需要使用第二级OGNL表达式去访问它们。
Set标签
set标签被用来为属性值设置另外一个名称,可以帮助更快更方便的访问属性。当我们使用property标签访问artist的名字,需要更深一层的访问。取而代之,我们可以在动作上下文(ActionContext)中设置另外一个属性,并直接访问它。举例如下:
artistName和artisBio属性将被保存在动作上下文(ActionContext)中。引用它们的时候要用#objectName语法。
也可以将属性值保存到session中。
用同样的方法,也可以将属性值保存到动作上下文(ActionContext)中的其他对象里去。
Push标签
我们可以使用push标签向值栈(ValueStack)中保存值。这个值会在值栈(ValueStack)的最上端,所以可以代替深层引用使用一级OGNL表达式进行引用。代码如下:
源代码:下载
源代码 + lib:下载
在这个例子中我们将学习怎样使用property标签,set标签,push标签。这些标签是Struts 2的数据标签。之前我们已经了解到什么是动作上下文(ActionContent)和值栈(ValueStack)。
动作上下文(ActionContext)是一个全局存储区域。它保存着处理请求关联的所有数据。
动作上下文(ActionContext)是单线程的。这确保了Struts 2的动作(action)的线程安全。
值栈(ValueStack)是动作上下文(ActionContext)的一部分。Struts 2的动作(action)驻留在值栈(ValueStack)中。
Property标签
property标签被用来从值栈(ValueStack)或在动作上下文(ActionContext)中的其他对象,如application或seesion中取得对象。下面我们来看看如何使用property标签。
下面是AlbumInfoAction类:
package vaannila; public class AlbumInfoAction{ private String title; private Artist artist; public String populate() { title = "Thriller"; artist = new Artist("Michael Jackson","King of pop"); return "populate"; } public String execute() { return "success"; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Artist getArtist() { return artist; } public void setArtist(Artist artist) { this.artist = artist; } }
下面是Artist类:
package vaannila; public class Artist { private String name; private String bio; Artist(String name, String bio) { this.name = name; this.bio = bio; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getBio() { return bio; } public void setBio(String bio) { this.bio = bio; } }
让我们来看看怎么在jsp页面通过property标签访问动作(action)类属性。以下是albumDetails.jsp页面的代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@taglib uri="/struts-tags" prefix="s"%> <html> <head> <s:head /> <mce:style type="text/css"><!-- @import url(style.css); --></mce:style><style type="text/css" mce_bogus="1">@import url(style.css);</style> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Album Details</title> </head> <body> <div class="content"> <b>Album Title :</b> <s:property value="title" /> <br> <s:push value="artist"> <b>Artist Name :</b> <s:property value="name" /> <br> <b>Artist Bio :</b> <s:property value="bio" /> <br> </s:push> </div> </body> </html>
我们可以看到title是AlbumInfoAction的属性,所以可以直接访问它。但是name和bio是Artist类的属性,所以我们需要更深一步的访问,我们需要使用第二级OGNL表达式去访问它们。
Set标签
set标签被用来为属性值设置另外一个名称,可以帮助更快更方便的访问属性。当我们使用property标签访问artist的名字,需要更深一层的访问。取而代之,我们可以在动作上下文(ActionContext)中设置另外一个属性,并直接访问它。举例如下:
<s:set name="artistName" value="artist.name" /> <s:set name="artistBio" value="artist.bio" /> <b>Album Title :</b> <s:property value="title" /> <br> <b>Artist Name :</b> <s:property value="#artistName" /> <br> <b>Artist Bio :</b> <s:property value="#artistBio" /> <br>
artistName和artisBio属性将被保存在动作上下文(ActionContext)中。引用它们的时候要用#objectName语法。
也可以将属性值保存到session中。
<s:set name="artistName" value="artist.name" scope="session" /> <s:set name="artistBio" value="artist.bio" scope="session" /> <b>Album Title :</b> <s:property value="title" /> <br> <b>Artist Name :</b> <s:property value="#session['artistName']" /> <br> <b>Artist Bio :</b> <s:property value="#session['artistBio']" /> <br>
用同样的方法,也可以将属性值保存到动作上下文(ActionContext)中的其他对象里去。
Push标签
我们可以使用push标签向值栈(ValueStack)中保存值。这个值会在值栈(ValueStack)的最上端,所以可以代替深层引用使用一级OGNL表达式进行引用。代码如下:
<b>Album Title :</b> <s:property value="title" /> <br> <s:push value="artist"> <b>Artist Name :</b> <s:property value="name" /> <br> <b>Artist Bio :</b> <s:property value="bio" /> <br> </s:push>
源代码:下载
源代码 + lib:下载
相关文章推荐
- 【JavaWeb-16】静态参数封装、3种动态参数封装、数据类型转换、struts标签、验证器
- struts2手动防止数据重复提交,使用struts标签取session中的值
- Struts2 数据 标签 之 Action Tag
- 在使用STRUTS标签修改MYSQL里面的数据时出现错误
- 在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?(转)
- jsp struts标签迭代各种数据
- struts数据标签的使用
- Highmaps网页图表教程之绘图区显示标签显示数据标签定位
- Highmaps网页图表教程之数据标签与标签文本
- 教程: JAVA-STRUTS教程-Struts标签
- 使用struts 2 获取服务器数据 ongl表达式 标签
- ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取
- Struts2 数据 标签 之 Bean Tag
- struts1.x 后台读取数据至html:select标签方法
- JSP页面加载时同时访问action获取数据( struts标签s:action方法)
- FusionCharts中文教程:自定义图表——数据标签
- 教程: JAVA-STRUTS教程-Struts标签
- DEDECMS v5.7 loop标签调用任意表数据教程
- Struts 2 控制标签教程
- 【Hibernate】把Hibernate在后台查询到的数据通过Struts标签在前台进行输出