溫故知新:struts2_04常用標簽

          struts2提供的一套from標簽使得數據的展示變得非常容易,想必這是它如此流行的原因之一,真的很方便。。

          首先,為了能夠使用struts2提供的標簽,我們需要先添加標簽的引用
          在JSP頁面上添加,uri的具體值可以在struts2包的META-INF的struts-tags.tld文件中查看
          <%@taglib prefix="s" uri="/struts-tags"%>
          先看一下最常用的
          1 <s:property value="str" default="" escapeCsv="" escapeHtml="" escapeJavaScript="" escapeXml=""/>
          和EL表達式${str}的作用類似,展示動態數據,只不過property標簽強化了很多功能,可以免去判斷直接設定默認值,忽略cvs,html等內容,雖然struts2的標簽不支持EL表達式但是有一種類似的寫法
          1 <s:property value="%{str}"/>

          其次是流程控制標簽
          1 <s:if test="condition != null">
          2     <!--你的代碼-->
          3 </s:if>
          test的內容可以使用OGNL表達式獲取,除了Java那些常規的判斷寫法,可以將&&可以寫作and,||可以寫作or,和JSTL的判斷類似,都有自己的個性

          之后是迭代標簽,迭代標簽可以說是struts2標簽中最常用的標簽之一,不僅是因為列表功能很常見,而且迭代標簽給出了很好用的功能
          假定vals是個list,那么遍歷這個list
          1 <s:iterator value="vals" var="val" begin="0" end="5" status="st" step="2">
          2     <s:property value="val"/>-<s:property value="#st.index"/>-<s:property value="#st.count"/><br>
          3 </s:iterator>
          begin和end屬性可以靈活的設定遍歷的區間,step則是步進的長度,但是step必須在指定了begin之后才生效,特別要說明status這個屬性,聲明了st之后,便可以獲得當前遍歷的下標或者行號,這樣一來就可以根據需求執行其他的操作。var屬性則聲明了當前的遍歷對象,使用var屬性之后,會在ValueStack中的root和ActionContext中各生成一份當前對象,所以也可以寫為<s:property value="#val"/>,如果不聲明var屬性,則只會在root中生成一份當前對象,是否聲明var屬性,取決于當前遍歷的元素類型,比如vals是一個user列表,那么迭代標簽會把當前迭代的user對象置于棧頂,循環內直接寫<s:property value="name"/>就可以獲取user的name值,無需聲明var屬性。

          假定vals是個map,那么遍歷這個map
          <s:iterator value="mapVals" var="val" begin="0" end="5" status="st" step="2">
          2     <s:property value="mapVals.get(#val.getKey())"/>-<s:property value="#st.index"/>-<s:property value="#st.count"/><br>
          </s:iterator>
          或者寫為
          <s:iterator value="mapVals.keySet()" var="keyId" begin="0" end="5" status="st" step="2">
          2     <s:property value="mapVals.get(#keyId)"/>-<s:property value="#st.index"/>-<s:property value="#st.count"/><br>
          </s:iterator>

          一些其他的表單標簽
          1 <s:textfield label="username" name="%{user.username}"/>
          2 <s:checkboxlist name="name" label="多選框"  list="#{'1':'Nick','2':'lily','3':'Mary' }" listKey="key" listValue="value" value="#{'1','2'}"/>
          3 <s:radio label="Conutry" name="Conutry" value="2" list="#{'1':'中國','2':'美國','3':'俄羅斯' }" listKey="key" listValue="value"/>
          4 <s:select list="users" label="姓名" value="1" listKey="id" listValue="username" headerKey="-1" headerValue="請選擇"/>
          這些標簽雖然能很好的完成任務,但是不怎么靈活,一般來說前端的這些控件或多或少的都需要的添加自定義的樣式,所以這些標簽出現的機會比較少,只是簡單記錄一下。
          還有很多其他的標簽,比如form等,HTML自帶標簽完全可以滿足一般需求。
          這里特別提一下兩個工具類的標簽,其中格式化時間的date標簽用的比較頻繁,其次格式化數字的標簽number,可以用來截取數字長度,四舍五入等操作
          1 <s:date name="time" format="yyyy-MM-dd"/>
          2 <s:number name="money"/>



          posted on 2014-10-31 17:54 都較瘦 閱讀(157) 評論(0)  編輯  收藏 所屬分類: MVCFramework

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          博客定位:囿于目前的水平,博客定位在記錄自己的學習心得和隨手的練習

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 缙云县| 万州区| 衡阳县| 贡山| 富川| 额尔古纳市| 南雄市| 临邑县| 乌拉特中旗| 德江县| 武强县| 梧州市| 佳木斯市| 肃南| 柳林县| 司法| 宁夏| 科技| 双城市| 都昌县| 抚州市| 长泰县| 宿迁市| 科技| 凭祥市| 肇庆市| 烟台市| 东港市| 张掖市| 桂林市| 桐乡市| 红河县| 桦川县| 山丹县| 长兴县| 怀化市| 互助| 呼和浩特市| 左贡县| 乌苏市| 修武县|