您的位置:首页 > 编程语言 > Java开发

Struts2—非UI标签—数据标签

2016-06-26 11:27 651 查看
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 是否将&转义为&,默认为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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts