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

来源:互联网 发布:万网域名icp备案 编辑:程序博客网 时间:2024/06/06 07:02

一.通用标签简述

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;}@Overridepublic String execute() throws Exception {this.addFieldError("fielderror.test","wrong!");// TODO Auto-generated method stubreturn 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;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "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里可以看到MyDogdog: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


转载请注明出处:http://blog.csdn.net/acmman/article/details/47085811

0 0
原创粉丝点击