Struts标签

 Struts2只有一个标签库s,

引入它的方式为:<%@taglib prefix="s" uri="/struts-tags"%>

Struts2的标签不依赖于任何表现层技术,也就是说,Struts2提供的大部分标签,可以在各种表现层技术中使用,包括最常用的JSP页面,也可以在Velocity和FreeMarker等模块技术中使用。

一、Struts2的OGNL

OGNL获取Context中的对象中的属性的方法很简单:person.name就可以获取person对象的name属性的值。OGNL会从当前valueStack开始查找所要求的属性,一直往上层查找,直到找到为止。

除此之外,Struts2还提供了一些命名对象,它们存在于Stack Context中,所以访问这些对象时需要使用#前缀来指明。

1,parameters对象,用于访问HTTP请求参数。如#parameters['foo']或#parameters.foo,用于返回调用HttpServletRequest.getParameter("foo")的返回值。

2,request对象,用于访问HttpServletRequest的属性。如#request['foo']或#request.foo,用于返回调用HttpServletRequest.getAttribute("foo")的返回值。

3,session对象,用于访问HttpSession的属性。如#session['foo']或#session.foo,用于返回调用HttpSession.getAttribute("foo")的返回值。

4,application对象,用于访问ServletContext的属性。如#application['foo']或#application.foo,用于返回调用ServletContext.getAttribute("foo")的返回值。

5,attr对象,如果可以访问到,则访问PageContext,否则将依次搜索如下对象:HttpServletRequest, HttpSession , ServletContext中的属性。


二、表单标签

         这些标签相对简单,和silverlight的标签很类似,主要特点是能够和对象绑定,非常方便,但这些标签有时会也是负担,对美工的要求比较麻烦:

  1. checkbox - 输出一个复选框

  2. checkboxlist - 输出一个复选框列表

  3. combobox - 输出一个部件,可以从下拉框的内容填充一个文本框

  4. datepicker - 输出一个日期选择不见,使用了 JavaScript 和 DOM

  5. doubleselect - 输出一个双选下拉框部件,第二个下拉框依赖第一个

  6. head - 输出对应theme的HEAD部分的内容,例如 CSS 和 JavaScript 引用

  7. file - 输出一个文件选择框

  8. form - 输出一个form(表单)

  9. hidden - 输出一个hidden表单字段

  10. label - 输出一个 label

  11. optiontransferselect- 输出一个选项移动下拉组件,主要是两个下拉框和用来在两个下拉框之间移动选项的按钮.

  12. password - 输出一个密码输入框

  13. radio - 输出一个单选框

  14. reset - 输出一个reset表单按钮

  15. richtexteditor - 输出一个富文本编辑器

  16. select - 输出一个下拉框

  17. submit - 输出一个submit按钮

  18. textarea - 输出一个文本输入区域(textarea)

  19. textfield - 输出一个文本输入框

  20. token - 输出一个隐藏的字段来防止多次提交表单

  21. updownselect - 输出一个下拉框组件,带有上下按钮来移动下拉框组件的元素

三、控制标签,以下仅归纳几个最有用的。这个是struts的精华

    (1)if-else

<s:if test="${age > 60}">
    老年人
</s:if>
<s:elseif test="${age > 35}">
    中年人
</s:elseif>
<s:elseif test="${age > 15}" id="wawa">
青年人
</s:elseif>
<s:else>
    少年
</s:else>
    (2)多页面显示datagrid,接上篇,显示SysMune对象

<table class="datagrid2">
<tr>
   <th>序号</th>
   <th>角色名称</th>
   <th>角色描述</th>
   <th></th>
   <th></th>
</tr>
<s:iterator value="pageBean.list" id="SysMune" status="list">
<tr>    
<td><s:property value="#status.index+1" /></td>
<td>
  <s:property value="name" /></td>
<td><s:property value="url" /></td>
<td><a href="/studentManagerSystem/roleManager!preupdateRole.action?id=<s:property value='id' />" />
    修改</a></td>
<td><a href="/studentManagerSystem/roleManager!deleteRole.action?id=<s:property value='id' />"  onclick="return confirm('你确定要删除吗?')" />
    删除</a></td>
</tr>
</s:iterator>
</table>

(3)generator标签
使用generator标签可以将指定的字符串按指定分隔符隔成多个子串,临时生成的多个子串可以使用iterator标签来进行迭代输出。
<s:generator val="'Spring2.0,J2EE,Ajax'" separator=",">
<s:iterator status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
   <td><s:property/></td>
</tr>
</s:iterator>
</s:generator>

或者:

<s:generator val="'Spring2.0,J2EE,Ajax'"
separator="," id="books" count="2"/>
<table border="1" width="240">
<%
java.util.Iterator i = (java.util.Iterator) pageContext.getAttribute("books");
while(i.hasNext())
{
   String s = (String) i.next(); %>
   <tr>
   <td><%=s%></td>
   </tr>
<%
}
%>
</table>

(4)Sort标签


sort标签用于对指定的集合元素进行排序,进行排序时,必须提供自己的排序规则,即实现自己的Comparator,需要实现java.util.Comparator接口。使用sort标签时可指定如下几个属性:
comparator:必填属性,指定排序的Comparator实例


source:可选属性,指定被排序的集合,如果不指定则对valueStack栈顶的集合进行排序
JAVA代码如下:


package lee;


import java.util.Comparator;
public class MyComparator implements Comparator
{
public int compare(Object element1, Object element2)
{
   return element1.toString().length() - element2.toString().length();
}
}
上面的方法,如果返回一个大于0的数,则第一个元素大于第二个元素;返回0则表示两个元素相等,返回小于0的数,则第一个元素小于第二个元素。


JSP页面如下:


<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>使用s:sort对集合元素进行排序</title>
</head>
<body>
<s:bean id="mycomparator" name="lee.MyComparator"/>
<table border="1" width="200">
<s:sort 
source="{'J2EE','Ajax','Spring2.0'}" 
comparator="#mycomparator">
<s:iterator status="st"> 
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
   <td><s:property/></td>
</tr>
</s:iterator>
</s:sort>
</table>
</body>
</html>


四、数据标签

       该类型标签相对简单,和JSP很类似,不再赘述


你可能感兴趣的:(Struts标签)