Struts2的常用标签

struts2.0的常用标签
    1. 往action里传值:<input name="userName" type="text" class="input6" size="15"> 
    2. 显示标签 property 用于输出指定值:<s:property value="userName "/>
    3. 用于从页面往action中(user)的对象内传值:<s:text name="user.userName " id="username"/> 
    4. 判断<s:if> </s:if> 用于在页面中判断指定数据 <s:if test="userName == admin">…. </s:if> <s:else>…. </s:else>
    5. 迭代<s:iterator>用于将List、Map、ArrayList等集合进行循环遍历 
       <s:iterator value="userList" id="user" status="u"> 
          <s:property value="userName"/></a> 
       </s:iterator> 
    6. URL地址标签,<s:url>用于生成一个URL地址,可以通过URL标签指定的<s:param>子元素向URL地址发送请求参数 
       <s:url action=" "> 
          <s:param name=" " value=""></s:param> 
       </s:url>
    7. 超链接 <a href >一般和<s:url>标签一起使用,用于带多个参数。 
       <a href=" 
          <s:url action=" "> 
             <s:param name=" " value=""></s:param> 
             <s:param name=" " value=""></s:param> 
             <s:param name=" " value=""></s:param> 
          </s:url>
       ">超链接</a>
    8. set标签,用于将某个值放入指定的范围内。例如application,session等。 
       <s:set name="user" value="userName" scope=”request”/>

    Struts/webwork 的工作机制,它有哪些标签

Struts 2框架的大致处理流程如下:

* 浏览器发送请求,例如请求/mypage.action/reports/myreport.pdf等。

 核心控制器FilterDispatcher根据请求决定调用合适的Action

 WebWork的拦截器链自动对请求应用通用功能,例如workflowvalidation或文件上传等功能。

 回调Actionexecute方法,该execute方法先获取用户请求参数,然后执行某种数据库操作,既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。

 Actionexecute方法处理结果信息将被输出到浏览器中,可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持VelocityFreeMarker等模板技术。

 struts2 标签的使用之二 s:iterator

 struts2siterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo

s:iterator 标签有3个属性:

    value:被迭代的集合

    id   :指定集合里面的元素的id

    status 迭代元素的索引

 

1:jsp页面定义元素写法 数组或list

  1. <s:iterator value="{'1','2','3','4','5'}" id='number'>
  2.     <s:property value='number'/>A
  3. </s:iterator>
  4. 打印结果为:  1A2A3A4A5A

2:索引的用法

如果指定了status,每次的迭代数据都有IteratorStatus的实例,它有以下几个方法

int getCount()返回当前迭代了几个元素

int getIndex()返回当前元素索引

boolean isEven()当然的索引是否偶数

boolean isFirst()当前是否第一个元素

boolean isLast()

boolean isOdd()当前元素索引是否奇数

  1. <s:iterator value="{'a','b','c'}" id='char' status='st'>
  2.     <s:if test="#st.Even">
  3.         现在的索引是奇数为:<s:property value='#st.index'/>
  4.     </s:if>
  1.     当前元素值:<s:property value='char'/>
  1. </s:iterator>

3:遍历map

value可以直接定义为:

  1. value="#{"1":"a","2":"b"}"

每个元素以都好隔开。元素之间的keyvalue 冒号隔开

value也可以是数据栈里面的java.util.Map对象

遍历写法如下:

  1. <s:iterator value="map" id="id" status="st">
  1.      key : <s:property value='key'/>
  2.      value:<s:property vlaue='value'/>
  1. </s:iterator>

当然key value 都可以使java  Object

3:遍历数据栈.简单的List类,

List<Attr> 

class Attr{String attrName;String getAttrName(){return "123";}}

  1. <s:iterator value="label" id="id">
  1.     <s:property value="#id.attrName" />
  1. </s:iterator>

当然value 还可以写成 value="%{label}" label可以有.操作

label的属性List 可以写成value="%{label.list}"  相当于:getLabel().getList();

4:遍历2list

List<AttrName> attrN {color,size,style}

List<AttrValue> attrV {red,20,gay}

2list的元素是一一对应的,一个attrN对应一个attrV

  1. <s:iterator value="%{attrN }" id="id"   status="status">
  1.  index    is : <s:property value='status.index'/>
  1.  attrName is : <s:property value='id'/> or <s:property value='%{id}'/> 
  2.  attrName is : <s:property value='%{attrV[#status.index]}'/>
  1. </s:iterator>  

 

源文档 <http://blog.csdn.net/chinajust/article/details/3922760>

 

 

 

<!-- 类别 -->

<s:iterator value="categories">

<div id="left_x">

<div id="left122">

<table

style="float: left; height: auto; width: 678px; vertical-align: middle;">

<tr>

<td class="word14" style="width: 22px; padding-left: 10px;">

<s:property value="name" />

</td>

<td style="padding-bottom: 3px;">

<div id="left122_y">

<!-- 二级 -->

<s:if test="!children.isEmpty">

<s:iterator value="children">

<div

style="white-space: nowrap; width: 28%; float: left; margin-top: 5px; margin-bottom: 5px; ">

<b style="color: #990000;"><s:property value="name"

escape="false" /> </b>

<!-- 三级 -->

<s:if test="!children.isEmpty">

<span> <s:iterator value="children">

<s:a action="product_getByCategoryId"

namespace="/product">

<s:param name="category.id" value="id"></s:param>

<s:property value="name" escape="false" />

</s:a>

</s:iterator> </span>

</s:if>

</div>

</s:iterator>

</s:if>

<br/>

</div>

</td>

</tr>

</table>

</div>

</div>

</s:iterator>

 

 

  

s:property 用法

 

OGNL:Object Graph Navigation Language(对象图导航语言)

 

1,访问Action值栈中的普通属性:

<s:property value="attrName"/>

2,访问Action值栈中的对象属性(要有get set方法)

<s:property value="obj.attrName"/>

<s:property value="obj1.obj2.attrName"/>

3,访问值栈中对象属性的方法

<s:property value="obj.methodName()"/>

4,访问值栈中action的普通方法:

<s:property value="methodName()"/>

5,访问静态方法:

<s:property value="@com.softeem.LoginAction@methodName()"/>

6,访问静态属性:

配置属性文件,允许ognl访问静态方法struts.ognl.allow...=true

<s:property value="@com.softeem.LoginAction@attrName"/>

7,访问Math类的静态方法:

<s:property value="@@min(9,7)"/>

8,访问普通类的构造方法:

<s:property value="new com.softeem.User(2)"/>

9,访问集合:

list集合对象

<s:property value="listName"/>

list集合中的某个元素

<s:property value="listName[1]"/>

list中某个属性的集合

<s:property value="listName.{field}"/>

list中某个属性集合的特定值

<s:property value="listName.{field}[0]"/>

访问set

<s:property value="setName"/>

访问set中某个元素

<s:property value="setName[0]"/>

访问map

<s:property value="mapName"/>

根据key访问Map中的元素

<s:property value="mapName.username"/>

<s:property value="mapName['username']"/>

<s:property value="mapName[/"username/"]"/>

访问map中所有的key

<s:property value="mapName.keys"/>

10,访问map中所有的values

<s:property value="mapName.values"/>

11,访问map的大小

<s:property value="mapName.size()"/>

12,投影

<s:property value="listName.{?#this.age==1}"/>

<s:property value="listName.{^#this.age>1}"/>

<s:property value="listName.{$#this.age==1}"/>

<s:property value="listName.{$#this.age==1}.{age}==null"/>

[]:<s:property value="[0]"/>值栈中的对象

 

 

---------------------------------------

  访问action中传过来的对象:<s:property value="user"/>|${user }<br>

  访问action中传过来的对象中的属性:<s:property value="user.username"/>|${user.username }<br>

   访问action中传过来的对象属性类中的方法:<s:property value="user.getUsername()"/><br>

访问action中传过来的对象中的对象:<s:property value="user.group"/><br>

访问action中传过来的对象中的对象的属性:<s:property value="user.group.gname"/> |

<s:property value="user.group.getGname()"/><br>

访问action中的普通方法:<s:property value="getValue()"/><br>

访问其他类中过的静态方法:<s:property value="@com.softeem.pojos.User@printUser()"/><br>

   取到Math类中的方法:<s:property value="@@max(12,45)"/><br>

   访问User类的构造方法:<s:property value="new com.softeem.pojos.User()"/><br>

   访问list:<s:property value="users"/><br>

   获取list的长度:<s:property value="users.size()"/><br>

   取到list中第一个元素:<s:property value="users.get(0)"/>|<s:property value="users[1]"/><br>

取到listusername属性的集合:<s:property value="users.{username}"/><br>

根据key取到map中的元素:<s:property value="userMap.张三"/>|

<s:property value="userMap['三毛']"/><br>

访问map中所有的key:<s:property value="userMap.keys"/><br>

10,访问map中所有的values:<s:property value="userMap.values"/><br>

11,访问map的大小:<s:property value="userMap.size()"/><br>

12,投影:<s:property value="users.{?#this.username=='张三'}.{password}"/><br>

13,取到list中满足条件的开头的一个元素的密码:<s:property value="users.{?#this.username='张三'}.{password}[0]"/><br>

14,取到list中满足条件的最后的一个元素的密码:<s:property value="users.{$#this.username='张三'}.{password}"/><br>

15,<s:property value="users.{$#this.username=='admin'}.{group}==null"/><br>

16,从栈顶开始取,一直取到指定的位置(0表示栈底):<s:property value="[1]"/>

   <s:debug></s:debug>

 

源文档 <http://blog.csdn.net/lfp0202/article/details/6188484>


s:form


<s:a action="customer_login" namespace="/customer">

<img src="${context_path}/css/images/index_23.gif" class="imgx5" />

</s:a>


s:action



<s:action name="product_findBySellCount" namespace="/product" executeResult="true"></s:action>

 

public String findBySellCount() throws Exception {

Map<String, String> orderby = new HashMap<String, String>();

orderby.put("sellCount", "desc");

pageModel = productDao.find(1, 6, orderby);

return "findList";-

}

 

<s:a action="product_getByCategoryId" namespace="/product">

<s:param name="category.id" value="'22'"></s:param>

 


s:set context_path ctx


<s:set var="context_path"

value="#request.get('javax.servlet.forward.context_path')"></s:set>


s:if session


<s:if test="#session.customer != null">

欢迎  <s:property value="#session.customer.username" />

<s:a action="customer_logout" namespace="/customer">退出</s:a>

</s:if>


s:submit


<s:submit type="image" src="%{context_path}/css/images/index_09.gif"

value="搜索"></s:submit> 

 

你可能感兴趣的:(Struts2的常用标签)