Struts2—非UI标签—数据标签

  1. action标签

可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.
如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中.

使用action标签指定属性有:
- id: 可选属性,作为该Action的引用ID
- name:必选属性,指定调用Action
- namespace:可选属性,指定该标签调用Action所属namespace
- executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.

<s:action name="actionTag!default" executeResult="true" namespace="/generic/dataTag">
<param name="username" value="  "/>给action属性复制
<param name="email"         value="  "/>
</s:action>

2.bean

<!-- 使用bean标签创建一个Person类的实例 -->
<s:bean name="org.crazyit.app.dto.Person">
    <!-- 使用param标签为Person类的实例传入参数 -->
    <s:param name="name" value="'yeeku'"/>
    <s:param name="age" value="29"/>
    <!-- 因为在bean标签内,Person实例位于ValueStack的栈顶,
        故可以直接访问lee.Person实例 -->
    Person实例的name为:<s:property value="name"/><br/>
    Person实例的age为:<s:property value="age"/>
</s:bean>   
  • name: 实例化的javabean的实现类

  • var 可选: 指定则实例放入栈的上下文 允许用var直接使用

<!-- 使用bean标签创建一个Person类的实例,为其指定了var属性 -->
<s:bean name="org.crazyit.app.dto.Person" var="p">
    <!-- 使用param标签为Person类的实例传入参数 -->
    <s:param name="name" value="'yeeku'"/>
    <s:param name="age" value="29"/>
</s:bean>
<!-- 根据JavaBean实例指定的var属性来访问JavaBean实例 -->
Person实例的name为:<s:property value="#p.name"/><br/>
Person实例的age为:<s:property value="#p.age"/><br/>
${requestScope.p}

3.date标签

  • 格式化输出日期
  • 指定日期与当天日期的时间差
  • name 必填 : 要格式化的日期值
  • formart 可选: 指定格式格式日期
  • nice可选:为true、false(默认)。 指定是否输出指定日期与当前日期差值
  • var 可选: 对象放入值栈,在date标签结束可以通过该属性的值引用

注意:不与nice同时指定,如果同时指定。则忽略formart。
如果两个都没有则去国际化资源文件中寻找key为struts.date.farmat的消息,将该消息当成格式化文本来格式化日期。如果找不到则按默认格式输出。

<body>
<s:bean var="now" name="java.util.Date"/>
nice="false",且指定format="dd/MM/yyyy"<br/>
<s:date name="#now" format="dd/MM/yyyy" nice="false"/><hr/>
nice="true",且指定format="dd/MM/yyyy"<br/>
<s:date name="#now" format="dd/MM/yyyy" nice="true"/><hr/>
指定nice="true"<br/>
<s:date name="#now" nice="true" /><hr/>
nice="false",且没有指定format属性<br/>
<s:date name="#now" nice="false"/><hr/>
nice="false",没有指定format属性,指定了var<br/>
<s:date name="#now" nice="false" var="abc"/><hr/>
${requestScope.abc} <s:property value="#abc"/>
</body>

这里写图片描述
4.debug标签:

<s:debug/>

用于辅助调试.在页面上生成超链接,可以查看值栈和StackContext中所有信息
仅有的id属性:没有太大意义的一个属性

5.include
将一个jsp或者servlet包含到当前页面

  • value 必填:指定要包含的JSP或Servlet。
<h2>使用s:include标签来包含目标页面</h2>
<!-- 使用include标签来包含其他页面 -->
<s:include value="included-file.jsp"/>
<!-- 使用include标签来包含其他页面,并且传入参数 -->
<s:include value="included-file.jsp">
    <s:param name="author" value="'yeeku'"/>
</s:include>
//被包含的页面仅使用表达式语言来输出author参数。
<h3>被包含的页面</h3>
author参数值为:${param.author}

6.param标签
用于为其他标签提供参数

7.push标签
将某个值放到值栈的栈顶

  • value必填:指定放入值栈的栈值 !但是只在push标签内,一旦超出,刚刚放入的对象立即被移除
<h2>使用s:push来将某个值放入ValueStack的栈顶</h2>
<!-- 使用bean标签创建一个JavaBean实例,
    指定var属性,并将其放入Stack Context中 -->
<s:bean name="org.crazyit.app.dto.Person" var="p">
    <s:param name="name" value="'yeeku'"/>
    <s:param name="age" value="29"/>
</s:bean>
<!-- 将Stack Context中的p对象放入ValueStack栈顶-->
<s:push value="#p">
    <!-- 输出ValueStack栈顶对象的name和age属性 -->
    ValueStack栈顶对象的name属性:<s:property value="name"/><br/>
    ValueStack栈顶对象的age属性:<s:property value="age"/><br/>
</s:push>

8.set标签

用于将某个值放入指定范围内,例如application范围,session范围
可以理解为定义一个新变量,将已有值复制给新变量,并放入指定范围。 value
指定一个表达式,计算的结果赋变量,如果没有指定value属性,默认将栈顶对象赋给变量。

  • scope 可选:指定新变量放置的范围,可选application、session、 request 、page、 action(默认) 。如果指定为action,则放入request并放入OGNL的Stack Context。
  • value可选:指定将赋给变量的值,默认是栈顶。
  • var 指定该属性,改值放入到值栈中
<h2>使用s:set设置一个新变量</h2>
<!-- 使用bean标签定义一个JavaBean实例 -->
<s:bean name="org.crazyit.app.dto.Person" id="p">
    <s:param name="name" value="'yeeku'"/>
    <s:param name="age" value="29"/>
</s:bean>
将Stack Context中的p值放入默认范围(action)内。<br/>
<s:set value="#p" name="xxx"/>
Stack Context内xxx对象的name属性:<s:property value="#xxx.name"/><br/>
Stack Context内xxx对象的age属性:<s:property value="#xxx.age"/><br/>
request范围的xxx对象的name属性:${requestScope.xxx.name}<br/>
request范围的xxx对象的age属性:${requestScope.xxx.age}<hr/>
将Stack Context中的p值放入application范围内。<br/>
<s:set value="#p" name="yyy" scope="application"/>
application范围的yyy对象的name属性:${applicationScope.yyy.name}<br/>
application范围的yyy对象的age属性:${applicationScope.yyy.age}<hr/>
将Stack Context中的p值放入session范围内。<br/>
<s:set value="#p" name="zzz" scope="session"/>
session范围的zzz对象的name属性:${sessionScope.zzz.name}<br/>
session范围的zzz对象的age属性:${sessionScope.zzz.age}

9.url标签

用于创建URL地址,定义param附加请求参数

  • action可选:指定生成URL的Action和URL。如果Action不提供则使用Value。如果两个都没有则以当前地址为地址值
  • achor 可选 指定url的锚点
  • encode 可选 对指定参数进行编码 ,默认是true。 不支持cookie改写url,支持session
  • escapeamp 是否将&转义为&amp,默认为true
  • var 可选: 是否放入到值栈
  • includeContext是否将当前上下文包含在URL地址
  • includeParams是否包含请求参数,改属性值只能为none,get
  • namespace指定action所属的命名空间
  • portletmode指定portle模式
  • scheme指定url使用的协议
<h2>s:url来生成一个URL地址</h2>
只指定value属性的形式。<br/>
<s:url value="editGadget.action"/>
<hr/>
指定action属性,且使用param传入参数的形式。<br/>
<s:url action="showBook">
    <s:param name="author" value="'yeeku'" />
</s:url>
<hr/>
既不指定action属性,也不指定value属性,但使用param传入参数的形式。<br/>
<s:url includeParams="get"  >
    <s:param name="id" value="%{'22'}"/>
</s:url>
<hr/>
同时指定action属性和value属性,且使用param传入参数的形式。<br/>
<s:url action="showBook" value="xxxx">
    <s:param name="author" value="'yeeku'" />
</s:url>

10.property标签

用于输出值栈中的对象的属性值

  • value 指定要输出的对象属性 没有则输出栈顶
  • default 可选 value为null输出该default值
  • escape 是否专一输出内容中的html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值