<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫故知新: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 都較瘦 閱讀(155) 評論(0)  編輯  收藏 所屬分類: MVCFramework

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

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

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧美日韩自偷自拍| 亚洲av乱码一区二区三区| 免费无码国产V片在线观看| 好吊妞视频免费视频| 中文字幕无码亚洲欧洲日韩| 一个人看的www在线观看免费| 亚洲成在人线电影天堂色| 18pao国产成视频永久免费| 亚洲精品国产成人| 日本亚洲免费无线码| 亚洲人成7777影视在线观看| 91免费精品国自产拍在线不卡| 亚洲国产成人久久精品app| 黄色成人免费网站| 亚洲乱理伦片在线观看中字| 国产成人高清精品免费鸭子| 国产JIZZ中国JIZZ免费看| 久久久久久a亚洲欧洲aⅴ| 免费无码又爽又刺激高潮视频| 亚洲成人网在线观看| 免费毛片在线播放| 性生大片视频免费观看一级| 亚洲国产精品成人精品无码区在线| 亚洲人成免费电影| 亚洲色成人WWW永久在线观看| 国产麻豆剧传媒精品国产免费| 国产黄色片免费看| 色拍自拍亚洲综合图区| 成人人观看的免费毛片| 一级做a爰片久久毛片免费看| 亚洲AV区无码字幕中文色| 成人黄色免费网址| 四虎成人精品国产永久免费无码 | 精品免费久久久久国产一区| 中文字幕亚洲色图| 永久黄网站色视频免费| 热99RE久久精品这里都是精品免费| 久久综合亚洲色HEZYO社区 | 成人毛片免费视频| 久久精品无码专区免费| 亚洲区精品久久一区二区三区|