struts2标签--转载

来源:互联网 发布:管家婆怎么数据清除 编辑:程序博客网 时间:2024/06/06 20:42
 

Struts2中的property标签
property标签用于取得OgnlContext上下文中的属性值,也称为数据标签
特点是取request/session/application/attr/parameters这五个范围时,需要明确指定范围如:
<s:property value="#request.属性名" />,记住,范围前面带#号,如果取ValueStack中的值时,是不需要带#的,可以直接取,因为Action中存储在ValueStack中的,所以取Action中的属性是不需要带#号的,可以直接取.

1.显示Action中的属性值:<s:property value="属性名" />
这里不再演示

2.显示字符串,使用单引号:<s:property value="'字符串'" />
<s:property value="'输出字符串'" /><br />
没有实用意义,还不如在页面上直接打字

3.显示默认值,Action中找不到指定的属性时,显示default属性的值:<s:property value="属性名" default="默认值" />
Action:
public class Chapter10Action extends BaseAction {
private String message;

public String method1() {
   setMessage("test message");
   return "method1";
}

public String getMessage() {
   return message;
}

public void setMessage(String message) {
   this.message = message;
}
}

JSP:
<s:property value="msg" default="这里显示的是默认值" />
这里是在Action找msg属性,可是没有这个属性,这时default属性起作用了.

4.解析HTML字符串,escape默认值为true,直接输出字符串,escape设为false时,解析HTML字符串:
<s:property value="'<b>粗体</b>'" escape="true"/><br />
输出结果: <b>粗体</b>
<s:property value="'<b>粗体</b>'" escape="false"/><br />
输出结果:粗体
<s:property value="'<font color=red>红色</font>'" escape="false" />
输出: 红色
感觉也没有什么作用

5.特殊作用, <s:property/>输出ValueStack中的第一个对象
<s:property/>
输出结果:
chapter10.action.Chapter10Action@ee21f5

特殊标记
<s:debug />
能够生成一个超链接,点击后可以显示出OgnlContext上下文中的信息,供开发人员调试.

Struts2中的set标签
set标签用于赋予变量一个特定范围的值。
set的属性:
var:设置变量的名称,不推荐使用id和name设置变量的名称;
value:设置变量的值;
scope:作用范围,可以设置page,request,session,application,action;不设置scope时,变量默认保存在OgnlContext中。
<s:set var="userName" value="'zhanghaidang'" scope="request" />
<br />
<s:property value="#request.userName" />
<br />
创建变量userName=’zhanghaidang’,并将userName存放在request范围中
看下面这句
<s:set var="userName" value="'zhanghaidang'"/>
这里没有指定存储的范围,那么会存储在哪里呢,通过<s:debug />我们可以看到存储到OgnlContext上下文中了.他和page,request,session,application,action这几个内置对象是同等地位的,那么这时候我们怎么取值呢,因为它不属于任何范围,我们就不能#request.userName这样取值了.改成下面的取值方式:
<s:property value="#userName" />


Struts2中的include标签
include标签用于包含指定的页面。
value:被包含页面的地址,字符串类型,如果是OGNL表达式,则要使用以下形式:%{OGNL表达式};
<s:include value="/test1.jsp" />
<s:set var="url" value="'/test2.jsp'" />
<s:include value="%{#url}" />
生成的HTML代码,可以看到所有的代码都被包含进来了,经测试,不支持包含action的路径地址,需要注意的地方, value="'/test2.jsp'"这里有个单引号
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
   <title>Struts2 校验</title>
</head>

<body>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
   <title>Struts2 校验</title>
</head>

<body>
   测试页面
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
   <title>Struts2 校验</title>
</head>

<body>
   测试页面2
</body>
</html>
</body>
</html>

Struts2中的if标签
if标签用来处理条件判断。
<s:if test=""></s:if>
<s:elseif test=""></s:elseif>
<s:else></s:else>
<s:set value="11" var="month" />
<s:if test="#month > 0 && #month<4">

</s:if>
<s:elseif test="#month > 3 && #month<7">

</s:elseif>
<s:elseif test="#month > 6 && #month<10">

</s:elseif>
<s:else>

</s:else>
判断是否包含in, not in:
<s:set value="{'a','b','c'}" var="list" />
<s:if test="'a' not in #list">

</s:if>
<s:else>
不在
</s:else>


Struts2中的iterator标签
iterator标签用于遍历集合:
1.遍历集合:使用<s:property/>输出集合中的元素;
2.定义变量:使用var属性定义变量,遍历时变量表示当前元素;
3.当前状态:使用status属性定义状态变量,遍历时通过状态变量的属性取得当前元素的状态;
4.支持iterator遍历的集合有以下几种:collections,map,enumeration,iterator,array
<s:set var="list" value="{'a','b','c'}" />
<s:iterator var="str" value="#list">
<s:property value="#str" />
</s:iterator>

<s:iterator value="{'a', 'b', 'c'}" status="s">
<s:property /> |
当前个数:<s:property value="#s.count" /> |     
当前索引:<s:property value="#s.index" /> |       
当前个数是否偶数:<s:property value="#s.even" /> |
当前个数是否奇数:<s:property value="#s.odd" /> |    
是否第一个元素:<s:property value="#s.first" /> |      
是否最后一个元素:<s:property value="#s.last" /> |       
<br />
</s:iterator>
看到这里<s:property />,这里输出时并没有指定value属性,我们知道如果没有指定value属性,会将栈顶中的值打印出来,因为iterator标签在循环时,会将临时产生的对象放在栈顶,所以可以直接输出.
<s:iterator value="{'a', 'b', 'c'}" status="s" begin="1" end="2" step="2" >
    <s:property /> |
当前个数:<s:property value="#s.count" /> |     
当前索引:<s:property value="#s.index" /> |       
当前个数是否偶数:<s:property value="#s.even" /> |
当前个数是否奇数:<s:property value="#s.odd" /> |    
是否第一个元素:<s:property value="#s.first" /> |      
是否最后一个元素:<s:property value="#s.last" /> |       
<br />
</s:iterator>
begin="1" 指定开始循环的起始下标,默认为0
end="2" 指定循环结束的下标
step="2" 指定循环的递增值

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

action: 可选,指定生成URL的地址为哪个Action,如果Action不提供,就使用value作为URL的地址值。
anchor: 可选,指定URL的描点。
encode: 这是一个可选属性,指定是否需要encode请求参数;
forceAddSchemeHostAndPort:可选,指定是否需要在URL对应的地址里强制添加scheme ,主机和端口
includeContext:可选指定是否需要在当前上下文包含URL地址中;
includeParams: 可选,指定是否包含请求参数。该属性的属性值只能为none,get或者all,默认get
method: 可选,指定使用Action的方法
namespace: 可选,该属性指定命名空间
portletMode:可选,指定结果页面的portlet模式
scheme: 可选,用于设置scheme属性
value: 可选,指定生成URL的地址。如果不提供就用action属性指定的Action作为URL地址值。
var: 可选,指定该url元素的引用id建议使用var
windowState:    可选,指定结果页面的portlet的窗口状态

%{#url}的作用,将变量的指转换为字符串.


原创粉丝点击