`
darkranger
  • 浏览: 25502 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2 数据标签说明

阅读更多
数据标签主要用于提供各种数据访问相关的功能,包括显示一个Action里的属性,以及生成国际化输出等功能
数据标签主要包括:
action :该标签用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可将该Action的处理结果包含到本页面来。
bean :该标签用于创建一个javabean实例。如果指定了id属性,则可以将创建的javabean实例放入Stack Context中。
date :用于格式化输入一个日期
debug :用于在页面上生成一个调试链接,当单击该链接时,可以看到当前ValueStack和Stack Context中的内容。
i18n: 用于指定国际化资源文件的baseName
include :用于在JSP页面中包含其他的JSP或Servlet资源
param: 用于设置一个参数,通常是用做bean标签、url标签的子标签
push :用于将某个值放入ValueStack的栈顶
set: 用于设置一个新变量,并可以将新变量放入指定的范围内
text :用于输出国际化消息
url: 用于生成一个URL地址
property: 用于生成输入某个值,包括输出ValueStack,Stack Context和Action Context中的值

10.4.1 action标签
使用action标签 可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。
action标签的属性:
id: 可选属性,该属性将会作为该Action的引用ID
name: 必填属性,指定该标签调用哪个Action
namespace: 可选,指定该标签调用的Action所在的namespace.
executeResult: 可选,指定是否要将Action的处理结果页面包含到本页面。默认是false,即不包含
ignoreContextParams: 可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。

下面是本示例应用中的Action类,包含连个处理逻辑。代码如下

public class TagAction extednds ActionSupport

{

      //封装用户请求参数的author属性

     private String author;

     //author的get和set的方法,省略……

    public String execute() throws Exception

    {

           return   "done";

    }    

    public String login() throws Exception

    {

            ServletActionContext.getRequest().setAttribute("author",getAuthor());

            return "done";

    }

}

上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。代码如下

<package  name="lee" extends="struts-default">

   <!--定义第一个Action,使用lee.TagAction的execute方法作为处理逻辑-->

    <action name="tag1"  class="lee.TagAction">

             <result name="done">succ.jsp</result>

    </action>

    <!--定义第二个Action,使用lee.TagAction的login方法作为处理逻辑-->

     <action  name="tag2"  class="lee.TagAction"  method=“login”>

           <result   name="done" > loginSucc.jsp </result>

     </action>

..............</package>

上面配置文件将一个Action类定义成两个逻辑Action,可以在JSP页面中通过<s:action.../>标签来调用这两个逻辑Action,部分jsp代码如下:

       下面调用第一个Action,并将结果包含到本页面中。<br>

        <s:action   name="tage1"  executeResult=“true” />

        <hr/>

        下面调用第二个Action,并将结果包含到本页面中。<br>

         阻止本页面请求参数传入Action  <br>

        <s:action   name=“tag2”  executeResult="true"  ignoreContextParams="true" />

        </hr>

        下面调用第二个Action,且不将结果包含到本页面中。<br>

         <s: action   name="tag2"  executeResult="false" />

         <s:property   value="#attr.author"/>

上面页面中,通过指定executeResult属性来控制是否将处理结果包含到本页面中;还可以通过ignoreContextParams属性来决定是否将本页面的请求参数出入Action。

         在浏览器中浏览该页面,并且传入一个名字为author的请求参数,P331如图10.12

         从图可看出,本次请求包含了一个名为author的请求参数,该请求参数的值为yeeku,但在第二次调用时该菜蔬并未传给Action,因此使用action标签时阻止了参数的传入。

10.4.2  bean标签

      bean标签 用于创建一个JavaBean的实例。创建JavaBean实例时,可以在标签体内使用<param.../>标签为该JavaBean实例传入属性,要使用这个标签,需要为该JavaBean类提供对应的setter方法。如该JavaBean类提供了对应的getter方法,我们就可以访问对应的属性。

bean标签 的属性:

name: 必填,指定要实例化的JavaBean的实现类

id: 可选。如指定了该属性,则该Javabean实例会被放入StackContext中(不是ValueStack),从而允许直接通过该id属性来访问该JavaBean实例。

-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意: 在bean标签内时,bean标签创建的JavaBean实例放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。除非指定了id属性
----------------------------------------------------------------------------------------------------------------------------------------------

下面是个简单的JavaBean

public  class  Person

{

     private String name;

     private  int age;

     //getter和setter方法省略

     ……

}

在jsp页面中的代码:

<!--使用bean标签创建一个lee.Person类的实例-->

<s:bean   name="lee.Person">

<!--使用Param标签为lee。Person类的实例传入参数-->

<s:param   name="name"  value="'yeeku'"/>

<s:param  name="age"   value="29"/>

<s:property  value="name"/> <br>

<s: property  value="age"/>

</s:bean>

带id属性的用法:

<s:bean   name="lee.Person"  id=“p”>

<!--使用Param标签为lee。Person类的实例传入参数-->

<s:param   name="name"  value="'yeeku'"/>

<s:param   name="age"   value="29"/>

</s:bean>

<s:property   value="#p.name"/> <br>

<s:property   value="#p.age"/>

10.3.4 date标签

date标签 用于格式化输入一个日期,还可以计算指定日期和当前时刻之间的时差

date属性:

format: 可选,如指定该属性,将根据该属性指定的格式来格式化日期

nice: 可选,值为true或者false,用于指定是否输出指定日期和当前时刻的时差。默认是false,即不输出

name: 必填,指定要格式化的日期

id: 可选,指定引用该元素的id值

通常,nice属性和format属性不同时指定,(不指定nice属性时,该属性值为false)。因为指定nice为true,代表输出指定日期和当前时刻的时差;指定format属性,则表明将指定日期按format指定的格式来个格式化输出。

如果即没有指定format,也没指定nice=“true”,则系统会到国际化资源文件中寻找key为struts.date.format的消息,将该消息当成格式化文本来格式化日期。如果无法找到key为struts.date.format的消息,则默认采用 DateFormat.MEDIUM格式输出。

看如下jsp代码:

<%

//生成一个Date实例

java.util.Date  now  =  new  java.util.Date(107,12,23,13,23,24);

//将该Date实例设置成一个pageContext里的属性

pageContext.setAttribute("now", now);

%>

1> nice = "false",且指定format=“dd/MM/yyyy”<br>

<s:date   name="#attr.now"   format="dd/MM/yyyy"  nice=“false”/> <hr><br>

2> nice = "true",且指定format=“dd/MM/yyyy”<br>

<s:date  name="#attr.now"   format="dd/MM/yyyy"  nice=“true”/> <hr><br>

3> 指定nice = "true"<br>

<s:date   name="#attr.now"    nice=“true”/> <hr><br>

4> nice = "false",且没有指定format<br>

<s:date  name="#attr.now"   nice=“false”/> <hr><br>

如图p334

当没有指定nice=“true”属性,且不指定format属性时,系统将日期格式化成“2008年01月23日”,这是因为在系统的全局国际化资源文件中提供了如下一行:

#指定Struts2默认的国际化资源文件

struts.date.format=yyyy年MM月dd日

10.4.4  debug标签

debug标签 只要用与辅助调试,它在页面上生成一个超级链接,通过该该链接可以查看到ValueStack和StackContext中所有的值信息。

debug属性:id,该元素的一个引用id

在上面测试bean标签的页面中增加<s:debug/> 标签,通过浏览器查看该页面,将看到如图10.15

点击“[Debug]”链接,将看到10.16图p335

10.4.5  include标签

include标签 用于将一个JSP页面,或者一个Servlet包含到本页面中,使用该标签有如下两个属性:

value: 必填,指定需要被包含的JSP页面,或者Servlet

id: 可选,指定该标签的ID引用

还可以为<s:include.../>标签指定多个<param.../>子标签,用于将多个参数值传入被包含的JSP页面或者Servlet

看下面代码:

<h2>使用s:include标签来包含目标页面</h2>

<s:include   value="include-file.jsp"/>

<!--使用include标签来包含其他页面,并且传入参数-->

<s:include   value="include-file.jsp">

    <s:param  name="author"  value="'yeeku'" />

</s:include>

被包含的页面仅使用表达式语言输出author参数,被包含页面的代码如下:

<h3>被包含的页面</h3>

<!--表达式语言输出author的请求参数-->

${param.author}

如图p336

10.4.6  param标签

param标签 主要用于为其他标签提供参数

param标签属性:

name: 可选,指定需要设置参数的参数名

value:   可选,指定需要设置参数的参数值

id: 可选,指定引用该元素的id

用法:

<param  name="color"  value="blue" />

这里color参数的值是,blue对象的值----如果blue对象不存在,则color为null。

如果要指定字符串则value=” ‘blue’ “

10.4.7  push标签

push标签用于将某个值放到ValueStack的栈顶,可以跟简单的访问该值

push标签 的属性:

value: 必填,指定需要放到ValueStack栈顶的值

id: 可选,指定该标签的ID

下面代码,讲一个值放到ValueStack的栈顶,从而可以通过<s:property.../>标签来访问

代码如下:

<!--使用bean标签创建一个JavaBean实例,并将其放入Stack Context中-->

<s:bean  name="lee.Person"  id="p">

   <s:param  name="name"  value="'yeeku'"/>

   <s:param   name="age"  value="29"/>

</s:bean>

<s:push   value="#p">

   <s:property   value="name"/>

   <s:propery   value="age"/>

</s:push>

见P337,图10.18

10.4.8   set标签

set标签 用于将某个值放入指定范围内。例如application、session范围等。

当某个值所在的对象图深度非常深时,例如如下:person.worker.wife.parent.age,每次访问该值不仅性能地下,而可读性也很差。解决这个问题,可以将改该值设置成一个新值,并放入特定范围内。

set标签属性:

name: 必填,重新生成的新变量的名字

scope: 可选,指定新变量被放置的范围,该属性可以接受application、session、request、page或action 5个值。如果没有指定,默认是放置在Stack Context中。

value: 可选,指定将赋给变量的值。如果没指定,则将ValueStack栈顶的值赋给新变量。

id: 可选,指定该元素的引用ID

实例代码如下:

<!--使用param标签为JavaBean实例传入参数-->

<s:bean  name="lee.Person"  id="p">

    <s:param   name="name"  value="'yeeku'"/>

    <s:param  name="age"  value="29"/>

</s:bean>

将Stack Context中的p值放入默认范围内。<br>

<s:set value="#p"  name="xxx"/>

<s:property  value="#xxx.name"/> <br>

将Stack Context中的p值放入application范围内<br>

<s:set  value="#p"  name="xxx"  scope="application"/>

<s:property   value="#attr.xxx.name"/> <br>

将Stack Context中的p值放入session范围内<br>

<s:set  value="#p"  name="xxx"  scope="session"/>

<!--使用JSP2.0表达式语言直接访问session中的属性-->

${sessionScope.xxx.name}<br>

P338见图10.19

10.4.9  url标签

url标签 用于生成一个URL地址,可以通过param向url标签指定参数,从而指定URL发送请求参数。

url标签的属性:

includeParams: 可选,指定是否包含请求参数。该属性的属性值只能为none,get或者all

scheme: 可选,用于设置scheme属性

value: 可选,指定生成URL的地址。如果不提供就用action属性指定的Action作为URL地址值。

action: 可选,指定生成URL的地址为哪个Action,如果Action不提供,就使用value作为URL的地址值。

namespace: 可选,该属性指定命名空间

method: 可选,指定使用Action的方法

encode: 这是一个可选属性,指定是否需要encode请求参数

includeContext: 可选,指定是否需要将当前上下文包含在URL地址中。

anchor: 可选,指定URL的描点。

id: 可选,指定该url元素的引用id

action属性和value属性的作用大致相同。指定action属性,系统会在指定属性后加.action后缀。如果两个都没有指定,就以当前页作为URL的地址值。

实例代码如下:

只指定value属性:<br>

<s:url  value="editGadget.action"/>

<hr>

指定action属性,且使用param传入参数的形式。<br>

<s:url  action="showbook">

    <s:param  name="author"  value="'yeeku'">

</s:url>

既不指定action属性,也不指定value属性,且使用param传入参数的形式。<br>

<s:url  includeParams="get" >

     <s:param  name="id"  value="%{'22'}" />   <!--这里%{  } 有疑问 -->

</s:url>

<hr>

同时指定action属性和value属性,且使用param传入参数的形式<br>

<s:url  action="showBooke"  value="xxxx">

    <s:param  name="author"  value="'yeeku'" />

</s:url>

P340如图10.20

10.4.10   property标签

property标签 的作用就是输出指定值,属性值如下:

default: 可选,如果需要输出的属性值为null,则显示的default属性指定的值

escape: 可选,指定是否escapeHTML代码

value: 可选,指定需要输出的属性值。如果没指定,默认输出ValueStack栈顶的值

id: 可选,指定该元素的标识


本文转载自:
http://blog.csdn.net/ccsky001/archive/2009/02/03/3859895.aspx
分享到:
评论

相关推荐

    Struts2常用标签及说明

    ### Struts2常用标签及其应用详解 #### 一、引言 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的标签库来帮助开发者更高效地进行Web应用程序的开发。这些标签不仅简化了页面逻辑的编写,还提高了代码...

    Struts2全部标签使用说明

    Struts2是一个流行的MVC框架,它的标签库极大地方便了开发者在JSP页面上的工作。下面将详细介绍Struts2中的部分核心标签及其用法。 A. `&lt;s:a&gt;` 和 `&lt;s:action&gt;`: - `&lt;s:a href=""&gt;` 标签用于创建超链接,它可以绑定...

    struts2常用标签详解(实用版)

    ### Struts2常用标签详解(实用版) #### 引言 在Java Web开发领域中,Struts2框架因其丰富的功能及灵活的配置而备受开发者们的青睐。为了更好地掌握Struts2框架并提升开发效率,本文将详细介绍Struts2中常用的...

    Struts2标签使用及API文档

    `struts2.0_zh.chm`是Struts2的中文帮助文档,包含了所有标签的详细解释、属性说明以及使用示例。通过查阅API文档,开发者可以了解每个标签的功能、属性设置以及如何与后台Action进行交互。 4. **标签详解文档** ...

    struts标签使用中文说明文档

    3. 数据标签:显示和操作数据,如`&lt;s:property&gt;`显示对象属性,`&lt;s:action&gt;`执行动作类方法。 4. 错误处理标签:处理表单验证错误,如`&lt;s:fielderror&gt;`显示字段错误信息。 5. 国际化标签:支持多语言,如`&lt;s:text&gt;`...

    struts2常用标签说明

    Struts2 提供了一系列丰富的标签库,使得开发者能够方便地在 JSP 页面中实现各种功能。以下是对这些常用标签的详细说明: 1. **传值标签**: - `&lt;input&gt;`:用于创建HTML输入字段,当表单提交时,其值会被传递到...

    struts 1.2 标签使用说明

    2. **Struts标签的公共特征**: - **自动区分范围**:标签在查找对象时会自动遍历页面、请求、会话和应用程序范围。 - **公共属性**: - `id`:定义自定义标签创建的脚本变量名称。 - `name`:指定关键字以查找...

    Struts2标签中文文档(html和chm格式)

    3. **数据标签**:如`s:property`、`s:label`等,用于显示和操作数据。它们可以方便地处理对象属性,减少硬编码。 4. **表单标签**:如`s:form`、`s:submit`等,用于创建和处理表单提交。Struts2表单标签支持Ajax...

    struts2标签库 struts2标签库

    Struts2框架提供了丰富的标签集合,这些标签主要用于JSP页面,帮助开发者处理常见任务,如数据展示、表单处理、逻辑控制等。在实际开发中,掌握Struts2标签库能让你的代码更加简洁且易于维护。 首先,我们要理解...

    最全的struts2标签说明.rar

    此压缩包"最全的struts2标签说明.rar"包含了一份详细的Struts2标签说明,这对于理解和使用Struts2框架中的各种标签极其有用,特别是对于学习和教育目的。 在Struts2中,标签是视图层的核心组成部分,它们极大地简化...

    Struts2页面开发中常用的标签介绍

    - **数据传递**: 在向Action传递数据时,推荐使用`&lt;s:textfield&gt;`等Struts2标签,以利用其内置的数据绑定机制。 - **属性显示**: 显示Action中的属性值时,使用`&lt;s:property&gt;`标签以提高代码的可读性和可维护性。 - ...

    struts2 标签库 帮助文档

    数据标签: action:直接调用一个Action,根据executeResult参数,可以将Action的处理结果包含到页面中。 bean:创建一个JavaBean实例。。 date:格式化输出一个日期属性。 debug:生成一个调试链接,当单击该链接时...

    Struts2入门级教程、与Spring结合、常用标签库使用说明.

    Struts2还支持使用丰富的标签库,例如Struts2的FreeMarker和JSP标签库,简化视图层的开发。这些标签可以方便地与Action中的数据进行交互,减少代码量,提高开发效率。 总之,Struts2是一个强大且灵活的MVC框架,它...

    Struts2教学视频

    Struts2的主要作用是协调前端视图、后端业务逻辑和模型数据,它通过拦截器(Interceptor)机制实现了请求处理的分层架构,使得代码更加模块化和易于管理。此外,Struts2还支持多种视图技术如JSP、FreeMarker、...

    struts中ec标签的使用

    总的来说,Struts的`ec`标签库提供了一套强大的工具,使得开发者可以方便地创建具有复杂交互功能的表格,包括数据过滤、排序、样式控制、事件处理以及多种视图支持。通过合理利用这些特性,可以提高Web应用的用户...

    struts2标签说明.pdf

    Struts2是一个流行的Java Web框架,它提供了一套丰富的JSP标签库,简化了视图层的开发。在JSP中使用Struts2的标签,首先需要在页面顶部引入标签库,通过以下代码: ```jsp &lt;%@taglib prefix="s" uri="/struts-tags...

    重要知识struts2标签说明.pdf

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,使得开发者可以在JSP页面中方便地处理业务逻辑和展示数据。下面将详细讲解Struts2的一些核心标签。 1. **If, ElseIf, Else标签** Struts2的If、ElseIf和Else...

    struts2的s标签

    Struts2提供了丰富的标签库,其中“S标签”(S-tags)是一种特殊的标签集合,用于简化页面上的数据绑定以及页面逻辑处理。S标签的设计目标是减少对脚本语言(如JSP EL表达式或脚本let)的依赖,并且提高页面的可读性...

    struts2标签用法

    首先,我们来看`struts2-tags-API.chm`文件,这通常是一个帮助文档,包含了Struts2标签库的所有API和详细说明。在实际开发中,开发者可以通过查阅这个文档来了解每个标签的属性、用法和示例。例如,`s:textfield`...

Global site tag (gtag.js) - Google Analytics