`

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: 可选,指定该元素的标识

分享到:
评论

相关推荐

    Struts2 与数据标签

    Struts2_控制标签与数据标签.pdf

    基于struts2 自定义标签 分页

    基于struts2的自定义分页标签实现的一个demo,连接数据库为Oracle

    Struts2 标签库(IBM资料

    Struts2 标签库(IBM资料)Struts2标签库概述; Struts2数据标签; Struts2控制标签; Struts2表单标签; Struts2非表单标签

    struts2讲义_吴峻申

    5.4 Struts2数据标签简介 88 5.4.1 action标签使用介绍 88 5.4.2 bean标签使用介绍 89 5.4.3 date标签使用介绍 91 5.4.4 debug标签使用介绍 94 5.4.5 include标签使用介绍 95 5.4.6 push标签使用介绍 97 5.4.7 set...

    struts2 标签库使用文档

    Struts2标签库的组成 Struts2框架的标签库可以分为以下三类: 用户界面标签(UI标签):主要用来生成HTML元素的标签。 表单标签:主要用于生成HTML页面的FORM元素,以及普通表单元素的标签。 非表单标签:主要用于生成...

    Struts 2标签的应用

    利用Struts 2标签创建ex3.jsp页面,此页面提交给tag.action,在structs.xml中配置这个action的转发视图为result.jsp在result.jsp页面中显示ex3.jsp页面控件的值。(源代码和实验报告)

    struts2标签使用方法

    Struts2 标签使用方法 Struts2 标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,Struts2 的主题、模板都提供了很好的扩展性。Struts2 允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂...

    第五章struts2的标签库.pdf

    Struts 2 的标签库可以分为三类:UI 标签、数据标签和逻辑标签。UI 标签主要用于生成 HTML 页面,数据标签用于显示和输出数据,逻辑标签用于实现业务逻辑。 Struts 2 的标签库提供了许多额外的标签,包括日期时间...

    struts2标签库的综合应用

    struts2 标签库使用说明.Struts2中通用标签可以分为二类:控制标签和数据标签。控制标签用于呈现页面时控制执行流程,数据标签用于访问值栈中的数据。

    教案第五章struts2的标签库.pdf

    Struts 2 标签库可以分为三类:UI 标签、数据标签和逻辑标签。UI 标签用于生成用户界面,数据标签用于显示和输出数据,逻辑标签用于控制流程和逻辑判断。 Struts 2 标签库提供了强大的功能和灵活的使用方式,帮助...

    struts2帮助文档

    struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2...

    struts批量修改数据

    struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据struts批量修改数据

    struts标签实现数据的查询修改

    struts标签实现数据的查询修改

    struts2(1-7)源码 struts2学习入门 源码学习

    struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter struts5 增加集合类型,使用范型 ...

    struts2 标签 doubleselect动态 用法

    struts2 标签动态数据用法, 在实际应用中,list往往是action返回的一个List,listKey和listValue来显示第一级下拉框,doubleList往往是一个Map, List&lt;DataObject&gt;&gt;,其中Map中的Key值是第一级下拉框的listKey。

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Struts2 概述 如何应用Struts2 Struts2 配置文件 如何编写Action 拦截器 Struts2的标签 OGNL 数据校验 国际化

    低清版 大型门户网站是这样炼成的.pdf

    3.3 struts 2数据标签详解 116 3.3.1 action标签详解 116 3.3.2 bean标签详解 118 3.3.3 date标签详解 120 3.3.4 debug标签详解 121 3.3.5 i18n标签详解 122 3.3.6 include标签详解 123 3.3.7 param标签详解 ...

    struts2 select标签通过hibernate读后台数据,使select选项为后台数据

    struts2 spring hibernate环境 主要是select标签从数据库读数据,形成下拉列表框

    struts2 标签库 帮助文档

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

Global site tag (gtag.js) - Google Analytics