• 2013第49周一jsp标签


    2013第49周一jsp标签
    今天在调试一些前台页面上的问题,在处理structs标签、jstl标签时遇到了些麻烦,为了调用后台数据字典中的类方法,开始在<c:forEach>中尝试怎么样都不行,后来知道要用<s:property>,于是把迭代又给位<s:iterator>,然后又因为在<s:iterator>、<s:if>中用了El表达式各种报错调试,最终浪费了近2小时左右时间,也算又深入理解了jsp相关的标签和表达式。

    struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的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>

    打印结果为: 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>
    5. 当前元素值:<s:property value='char'/>
    6. </s:iterator>

    3:遍历map
    value可以直接定义为:

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

    每个元素以都好隔开。元素之间的key和value 冒号隔开
    value也可以是数据栈里面的java.util.Map对象
    遍历写法如下:

    1. <s:iterator value="map" id="id" status="st">
    2. key : <s:property value='key'/>
    3. value:<s:property vlaue='value'/>
    4. </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">
    2. <s:property value="#id.attrName" />
    3. </s:iterator>

    <c:out>标签的作用是用来显示表达式的值。它的作用是用来替代通过JSP内置对象out或者<%=%>标签来输出对象的值。
    <c:out>标签的语法说明如下:
     
    <c:out value="expression" default="expression" escapeXml="boolean"/>
     
    <c:out>标签具有以下一些属性:
     
    l value:用来定义需要求解的表达式。
     
    l default:缺省值。当求解后的表达式为null或者String为空时将打印这个缺省值。
     
    l escapeXML:这个属性是可选的。用于指定在使用<c:out>标记输出诸如“<”、“>;”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为true,则会自动的进行编码处理。

    <s:property />用法汇总
     
    <li>1。访问值栈中的action的普通属性: username = <s:property value="username"/> </li>
     
    <li>2. 访问值栈中对象的普通属性(get set方法):<s:property value="user.age"/> | <s:property value="user['age']"/> | <s:property value="user["age"]"/> | wrong: <%--<s:property value="user[age]"/>--%></li>
     
    <li>3。访问值栈中对象的普通属性(get set方法): <s:property value="cat.friend.name"/></li>
     
    <li>4。访问值栈中对象的普通方法:<s:property value="password.length()"/></li>
     
    <li>5. 访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" /></li>
     
    <li>6. 访问值栈中action的普通方法:<s:property value="m()" /></li>
     
    <hr />
     
    <li>7. 访问静态方法:<s:property value="@com.bjsxt.struts2.ognl.S@s()"/></li>
     
    <li>8. 访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/></li>
     
    <li>9. 访问Math类的静态方法:<s:property value="@@max(2,3)" /></li>
     
    <hr />
     
    <li>10. 访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User(8)"/></li>
     
    <hr />
     
    <li>11. 访问List:<s:property value="users"/></li>
     
    <li>12. 访问List中某个元素:<s:property value="users[1]"/></li>
     
    <li>13. 访问List中元素某个属性的集合:<s:property value="users.{age}"/></li>
     
    <li>14. 访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/></li>
     
    <li>15.访问Set:<s:property value="dogs"/></li>
     
    <li>16.访问Set中某个元素:<s:property value="dogs[1]"/></li>
     
    <li>17.访问Map:<s:property value="dogMap"/></li>
     
    <li>18.访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap["dog101"]"/></li>
     
    <li>19.访问Map中所有的key:<s:property value="dogMap.keys"/></li>
     
    <li>20.访问Map中所有的value:<s:property value="dogMap.values"/></li>
     
    <li>21.访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/> </li>
     
    <hr />
     
    <li>22.投影(过滤):<s:property value="users.{?#this.age==1}[0]"/></li>
     
    <li>23.投影:<s:property value="users.{^#this.age>1}.{age}"/></li>
     
    <li>24.投影:<s:property value="users.{$#this.age>1}.{age}"/></li>
     
    <li>25.投影:<s:property value="users.{$#this.age>1}.{age} == null"/></li>
     
    <hr />
     
    <li>26.[]:<s:property value="[0].username"/></li>

       
  • 相关阅读:
    Netty相关知识积累
    Java内存管理
    使用nginx-upload-module搭建文件上传服务器
    mysql 5.7自动安装脚本
    CDH5集群搭建
    Linux常用命令
    编译原理要点四
    编译原理要点三
    编译原理要点二:
    编译原理要点
  • 原文地址:https://www.cnblogs.com/doit8791/p/3454750.html
Copyright © 2020-2023  润新知