0
点赞
收藏
分享

微信扫一扫

【Struts2框架】第四节Struts标签-通用标签简述与常用标签大例子


一.通用标签简述

1.通用标签

   a)property


   b)set


     i.默认为action scope,会将值放入request和ActionContext中


     ii.page、request、session、appliaction


   c)bean


   d)include(对中文文件支持有问题,不建议使用,如需包含,改用jsp包含)


   e)param


   f)debug


2.控制标签


   a)if elseif else


   b)iterator


      i.collections map enumeration iterator array


   c) subset//截取一个集合的一部分


3.UI标签


   a)theme


      i.simple xhtml(默认)css xhtml ajax


4.AJAX标签


   a)补充


5.$#%的区别


   a) $用于i18n和struts配置文件


   b) #取得ActionContext的值


   c) %将原本的文本属性解析为ognl,对于本来就是ognl的属性不起作用


     i.参考<s:property>和<s:include>


include标签

<li>include _include1.html 包含静态英文文件</li>
<s:include value="/_include1.html"></s:include>
<li>include _include2.html 包含静态中文文件</li>
<s:include value="/_include2.html"></s:include>
<li>include _include1.html 包含静态英文文件,说明%的用法
<s:set name="incPage" value=" '/_include1.html' "/>
<s:include value="%{#incPage}"></s:include>
</li>

上面代码自己运行体会一下


二.常用标签大例子

下面这个样例几乎涵盖了全部的struts常用标签

struts.xml:

<package name="test" namespace="/javaee" extends="struts-default">  
<action name="tags" class="cn.edu.hpu.action.TagsAction">
<result>/tags.jsp</result>
</action>
</package>


TagsAction.java:


package cn.edu.hpu.action;

import com.opensymphony.xwork2.ActionSupport;

public class TagsAction extends ActionSupport {

private String username;
private String password;

public TagsAction(){

}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

@Override
public String execute() throws Exception {
this.addFieldError("fielderror.test","wrong!");
// TODO Auto-generated method stub
return super.execute();
}

}


Dog.java:


package cn.edu.hpu.mode;

public class Dog {

private String name;

public Dog(){

}

public Dog(String name){
super();
this.name=name;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


@Override
public String toString() {
// TODO Auto-generated method stub
return "dog:"+name;
}
}


链接:


<body>
访问各种标签:<br/>
属性访问:
<a href="<%=basePath%>javaee/tags.action?username=u&&password=123&age=9&age=31">Tags</a>
</body>


结果页面:


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'tags.jsp' starting page</title>
</head>

<body>
<ol>
<li>property:<s:property value="username"/></li>
<!--s:property中value的值会解析成对象,加单引号说明是一个字符串对象-->
<li>property 取值为字符串:<s:property value="'username'"/></li>
<!--取到了,就用取到的值,取不到就用默认值default-->
<li>property 设定默认值:<s:property value="admin" default="管理员"/></li>
<!--escape默认为true,如果为false,就会把双引号里面的当成html语句-->
<li>property 设定HTML:<s:property value="'<hr/>'" escape="false"/></li>

<hr/>
<!--set在换名的时候用得比较多(有些名字比较长的)-->
<!--若不设定范围,adminName的值会同时放到request和ActionContext里-->
<li>set 设定adminName值(默认为request和ActionContext)-><s:set var="adminName" value="username"/></li>
<li>set 从request取值:<s:property value="#request.adminName"/></li>
<li>set 从ActionContext取值:<s:property value="#adminName"/></li>
<!--scope="page":只在当前页面有效-->
<li>set 设定范围 -><s:set name="adminPassword" value="password" scope="page"/></li>
<li>set 从相应范围取值:<%=pageContext.getAttribute("adminPassword")%></li>
<li>set 设定var,范围为ActionContext -><s:set var="adminPassword" value="password" scope="session"/></li>
<!--若指定范围(scope)用#取不到值-->
<li>set 使用#取值:<s:property value="#adminPassword"/></li>
<!--[Debug]栈值里能看到:session {adminPassword=123}-->
<li>set 从相应范围取值:<s:property value="#session.adminPassword"/></li>


<hr/>
<li>bean 定义bean,并使用param来设定新的属性值:
<!--在开始的时候会new这个对象,把它放进栈顶-->
<s:bean name="cn.edu.hpu.mode.Dog" var="MyDog">
<!--设置javaBean的初始值-->
<s:param name="name" value="'dagou'"></s:param>
<!--从值栈中取出name的值-->
<s:property value="name"/>
</s:bean>
<!--s:bean结束后就从栈顶清除了,如果想在访问其中的值,
就把bean设置到var里(var="MyDog"),这个值就会存到ActionContext里面,
在其他地方也可以#出来-->
<!--从ActionContext中取出name的值-->|
<s:property value="#MyDog.name"/>
<!--[Debug]在ActionContext里可以看到MyDog dog:dagou-->
</li>

<hr/>
<li>if elseif else:
<!-- parameters(在ActionContext中)装了我们所有传进来的参数 -->
age=<s:property value="#parameters.age" /><br/>
<!--前面说过的用set简化名字-->
<s:set var="age0" value="#parameters.age[0]"/>
<s:if test="#age0<0">wrong age!</s:if>
<s:elseif test="#age0<20">too young!</s:elseif>
<s:else>yeah!</s:else><br/>

<s:if test="#parameters.aaa == null">null</s:if>
</li>

<hr/>
<li>遍历集合:<br/>
<s:iterator value="{1,2,3}">
<!--s:property会拿出所有元素-->
<s:property/> |
</s:iterator>
</li>
<li>自定义变量:<br/>
<!--记住,凡是在var里的东西,都放在Context里了-->
<s:iterator value="{'aaa','bbb','ccc'}" var="x">
<s:property value="#x.toUpperCase()"/> |
</s:iterator>
</li>
<li>使用status:<br/>
<!--status状态,记录着每次循环到现在的状态是什么-->
<s:iterator value="{'aaa','bbb','ccc'}" status="status">
<s:property/> |
遍利过的元素总数:<s:property value="#status.count"/> |
遍历过的元素索引:<s:property value="#status.index"/> |
当前是奇数?<s:property value="#status.odd"/> |
当前是偶数?<s:property value="#status.even"/> |
是第一个元素吗?<s:property value="#status.first"/> |
是最后一个元素吗?<s:property value="#status.last"/>
<br/>
</s:iterator>
</li>

<hr/>
遍历MAP:<br/>
<li>
<s:iterator value="#{1:'a',2:'b',3:'c'}">
<s:property value="key"/> | <s:property value="value"/><br/>
</s:iterator>
</li>

<li>
<s:iterator value="#{1:'a',2:'b',3:'c'}" var="y">
<s:property value="#y.key"/> | <s:property value="#y.value"/><br/>
</s:iterator>
</li>


<li>

</li>
<s:debug></s:debug>
</ol>
</body>
</html>


结果:


property:u


property 取值为字符串:username


property 设定默认值:管理员


property 设定HTML:


_____________________________________________________


_____________________________________________________


set 设定adminName值(默认为request和ActionContext)->


set 从request取值:u


set 从ActionContext取值:u


set 设定范围 ->


set 从相应范围取值:123


_____________________________________________________


set 设定var,范围为ActionContext ->


set 使用#取值:


set 从相应范围取值:123


bean 定义bean,并使用param来设定新的属性值: dagou | dagou


_____________________________________________________




if elseif else: age=9, 31


too young! 


null


_____________________________________________________


遍历集合:


1 | 2 | 3 |


自定义变量:


AAA | BBB | CCC |


使用status:


aaa | 遍利过的元素总数:1 | 遍历过的元素索引:0 | 当前是奇数?true | 当前是偶数?false | 是第一个元素吗?true | 是最后一个元素吗?false 


bbb | 遍利过的元素总数:2 | 遍历过的元素索引:1 | 当前是奇数?false | 当前是偶数?true | 是第一个元素吗?false | 是最后一个元素吗?false 


ccc | 遍利过的元素总数:3 | 遍历过的元素索引:2 | 当前是奇数?true | 当前是偶数?false | 是第一个元素吗?false | 是最后一个元素吗?true 


______________________________________________________


遍历MAP:


1 | a


2 | b


3 | c




1 | a


2 | b


3 | c



举报

相关推荐

0 条评论