天天看點

Struts2 标簽總結

一、 寫jsp頁面的時候,在struts2中,用的是s标記,先引入标記: 

<%@ taglib prefix="s" uri="/struts-tags"%> 

二、 

struts2的标簽和struts1是完全不同的。 

struts2的标簽分為兩大類:非UI标志和UI标志  struts1 将标志庫按功能分成HTML、Tiles、Logic和Bean等幾部分 

下面就介紹strut2的具體标簽: 

1、UI 

UI标志又可以分為表單UI和非表單UI兩部分。表單UI部分基本與Struts 1.x相同,都是對HTML表單元素的包裝。不過,Struts 2.0加了幾個我們經常在項目中用到的控件如:datepicker、doubleselect、timepicker、optiontransferselect等。因為這些标志很多都經常用到,而且參數也很多,要在一篇文章詳細說明并非易事。 

下面主要是ui标簽的一些用法 

form: 

<s:form action="exampleSubmit" method="post" enctype="multipart/form-data"> 

<s:submit /> 

  <s:reset />

</s:form>可以上傳檔案的form。 

textfield: 

<s:textfield   label="姓名:"   name="name"   tooltip="Enter your Name here" /> 

datepicker: 

<s:datepicker   tooltip="Select Your Birthday"   label="生日"   name="birthday" /> 

 textarea: 

<s:textarea   tooltip="Enter your remart"   label="備注"   name="remart"   cols="20" 

  rows="3"/> 

select: 

<s:select   tooltip="Choose user_type"   label="" 

  list="#{'free':'免費','vip':'收費'}" value="#{'free':'免費'}"  

  name="bean.user_type" 

  emptyOption="true" 

  headerKey="None" 

  headerValue="None"/> 

<s:select   tooltip="Choose user_type" 

  label="" 

  list="#{'free':'免費','vip':'收費'}" value="#{'free':'免費'}"  

  name="bean.user_type" 

  emptyOption="true" 

  headerKey="None" 

  headerValue="None"/> 

<s:select 

list="venderList" 

listKey="id" 

listValue="name" 

value="%{profile.companyName}" 

name="companyName" cssClass="sel_style_w_180"/>  

checkboxlist: 

<s:checkboxlist 

  tooltip="Choose your Friends" 

  label="朋友" 

  list="{'Patrick', 'Jason', 'Jay', 'Toby', 'Rene'}" 

  name="friends"/> 

checkbox: 

  <s:checkbox 

  tooltip="Confirmed that your are Over 18" 

  label="年齡" 

  name="legalAge" 

  value="18"/> 

file: 

  <s:file 

  tooltip="Upload Your Picture" 

  label="Picture" 

  name="picture" /> 

a: 

<s:a href="getP.jsp" target="_blank" rel="external nofollow" >超連結送出</s:a> 

date : 

<s:date name="ad_end_time" format="yyyy-MM-dd"/>

2、非UI 

if、elseif和else 描述: 

執行基本的條件流轉。 

參數: 名稱必需預設類型描述備注test是Boolean決定标志裡内容是否顯示的表達式else标志沒有這個參數id否Object/String用來辨別元素的id。在UI和表單中為HTML的id屬性 例子: 

<%@ page c %> 

<%@ taglib prefix="s" uri="/struts-tags" %> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

  <head> 

  <title>Condition Flow</title> 

  </head> 

  <body> 

  <h3>Condition Flow</h3>  

  <!-- 

  這裡有點小技巧: 

  本來可以用#parameters.name[0]來獲得,請求中name的值。但是,在我實作include例子時, 無論我用param标志給name賦任何值,#parameters裡面不會含有任何值,是以#parameters.name也為空值。 

  其原因為:   當使用include标志時,被包含的頁面(included)裡#parameters拿到的是包含頁面裡的請求參數。 

  是以,這裡必須手工調用request.getParameter("name")。 

  --> 

  <s:iterator value="linkList" status="bean">

  <tr>

  <td class="data_tab_tdcl">

  <s:property value="#bean.Index+1" /> </td>

  <td class="data_tab_tdcl"><s:property value="link_title" /></td>

  <td class="data_tab_tdcl"><s:property value="link_url" /></td>

  <td class="data_tab_tdcl">

  <s:if test="link_type == 1"> 

       文字

  </s:if> 

  <s:elseif test="link_type == 2"> 

      圖檔

  </s:elseif> 

  <s:else> 

  -----

  </s:else>  

  </td>

  </body> 

</html> 

例1 condition.jsp 

iterator 描述:用于周遊集合(java.util.Collection)或枚舉值(java.util.Iterator)。 

參數: 名稱必需預設類型描述status否String如果設定此參數,一個IteratorStatus的執行個體将會壓入每個周遊的堆棧value否Object/String要周遊的可枚舉的(iteratable)資料源,或者将放入新清單(List)的對象id否Object/String用來辨別元素的id。在UI和表單中為HTML的id屬性 例子: 

<%@ page c %> 

<%@ page import="java.util.List" %> 

<%@ page import="java.util.ArrayList" %> 

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<% 

  List list = new ArrayList(); 

  list.add("Max"); 

  list.add("Scott"); 

  list.add("Jeffry"); 

  list.add("Joe"); 

  list.add("Kelvin"); 

  request.setAttribute("names", list); 

%> 

<html> 

  <head> 

  <title>Iterator</title> 

  </head> 

  <body> 

  <h3>Names: </h3> 

  <!-- 

  1、此處的空property元素用于獲得目前iterator的值 

  2、status被設成stuts,在iterator的裡面就可以通過#stuts取得IteratorStatus的對象。IteratorStatus類包含目前序号資訊,如是否第一個或最後一個,是否為奇數序号。這些資訊在我們做格式化的時候,顯得非常有用。 

  --> 

  <ol> 

  <s:iterator value="#request.names" status="stuts">  

  <s:if test="#stuts.odd == true"> 

  <li>White <s:property /></li> 

  </s:if> 

  <s:else> 

  <li style="background-color:gray"><s:property /></li> 

  </s:else> 

  </s:iterator> 

  </ol> 

  </body> 

</html>