• Struts2_Struts标签


    1、property

     1 <s:property value="username" /> 一般访问,访问ValueStack中的第一个username

     1 <s:property value="'username'"/> property取值为字符串,要显示字符串就加单引号

     1 <s:property value="admin" default="管理员"/> 首先回去ValueStack中去找admin,没找到就默认显示管理员

     1 <s:property value="'<hr/>'" escape="true" /> 要在网页显示纯文本的 <hr/>,escape要设置成false,escape默认就是false,为true就不是纯文本。

    2、set

     1 <s:set var="adminName" value="username"/> set 设定adminName值(默认为request 和 ActionContext)

     1 <s:property value="#request.adminName"/> 从request取值,但是如果在下面打一个 s:debug 在request中看不到adminName,原因可能是adminName还没来得及写入debug中,实际能获取到,那就是有;

     1 <s:property value="#adminName"/> 从ActionContext取值

      scope属性:application、session、request、page 和 action(默认)。

    设置范围为page,并从page取值:

     1 <s:set name="adminPassword" value="password" scope="page"/> 2 <%=pageContext.getAttribute("adminPassword") %> 

    不过上面的 name 属性在 2.1 以后已经过时了,一般用下面的方式:

     1 <s:set var="adminPassword" value="password" scope="session"/> 

    scope 设定了哪个范围,就往哪个范围去取值就行了,尽管测试可以发现,有时候在其他范围有时也能拿到对应的值,但并不是最佳实践。

    action范围: 1 <s:property value="#adminPassword"/> 

    request范围: 1 <s:property value="#request.adminPassword"/> 

    session范围: 1 <s:property value="#session.adminPassword"/> 

    application范围: 1 <s:property value="#application.adminPassword"/> 

    page范围: 1 <%=pageContext.getAttribute("adminPassword") %> 

    什么时候会用set标签:对变量进行重命名的时候,长名字换短名字、循环会用。

    3、bean

    1 <s:bean name="com.bjsxt.struts2.tags.Dog" var="mydog">
    2 <s:param name="name" value="'oudy'"></s:param>
    3 </s:bean>
    4 <s:property value="#mydog.name"/>

    给属性赋值:name="类的属性"、value="'字符串'",value要赋值字符串要加单引号。

    取值:new出的对象mydog存在于ActionContext中, <s:property value="#mydog.name"/> 就可取到。

    4、include (2.1版本会有中文问题)

     1     include _include1.html 包含静态英文文件
     2     <s:include value="/_include1.html"></s:include>
     3     
     4      
     5     include _include2.html 包含静态中文文件
     6     <s:include value="/_include2.html"></s:include>
     7     
     8     
     9     include _include1.html 包含静态英文文件,说明%用法
    10     <s:set var="incPage" value="%{'/_include1.html'}"></s:set>
    11     <s:include value="%{#incPage}"></s:include>

    %{字符串},强制将字符串变为OGNL表达式,上一行的例子: %{#incPage} 

     5、fielderror

    action 中设置 fielderror:

    1 public String execute(){
    2         this.addFieldError("fielderror.test", "wrong");
    3         return SUCCESS;
    4     }

    页面取值:

     1 <s:fielderror name="fielderror.test" theme="simple"/> 

    ===================================================================================

    Struts 2 控制标签

    6、if elseif else

    先发送一个请求:

    取出第一个值:

     <s:set var="age" value="#parameters.age[0]"> 

    进行判断:

    1 <s:if test="#age < 0">wrong age!</s:if>
    2 <s:elseif test="#age < 20">to young!</s:elseif>
    3 <s:else>yeah!</s:else>

    如上图,显示结果为 too young!

    判断单个值:

     <s:if test="#parameters.aaa == null">null</s:if> 为空就显示null。

    7、iterator 遍历集合

    遍历简单集合:

    1 <s:iterator value="{1,2,3}">
    2         <s:property /> |
    3 </s:iterator>

    OGNL 表达式中 {} 代表一个集合,遍历后的结果:

    自定义变量:

    1 <li>自定义变量:<br>
    2     <s:iterator value="{'aaa','bbb','ccc'}" var="x">
    3         <s:property value="#x.toUpperCase()"/> |
    4     </s:iterator>
    5 </li>

    使用status:

     1 <s:iterator value="{'aaa','bbb','ccc'}" status="status">
     2         <s:property/> |
     3         遍历过的元素总数:<s:property value="#status.count"/>
     4         遍历过的元素索引:<s:property value="#status.index"/>
     5         当前是偶数?:<s:property value="#status.even"/>
     6         当前是奇数?:<s:property value="#status.odd"/>
     7         是第一个元素吗?:<s:property value="#status.first"/>
     8         是最后一个元素吗?:<s:property value="#status.last"/>
     9         <br>
    10 </s:iterator>

     遍历map:

     1     <li>
     2         <s:iterator value="#{1:'a', 2:'b', 3:'c'}">
     3             <s:property value="key"/> | <s:property value="value"/><br>
     4         </s:iterator>
     5     </li>
     6     <li>
     7         <s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
     8             <s:property value="#x.key"/> | <s:property value="#x.value"/><br>
     9         </s:iterator>
    10     </li>

    Struts 的 UI标签,一般开发都是有美工和前台开发人员先把页面做好,如果再让程序员把这些代码转为Struts2的UI标签会比较麻烦,所以UI标签用的不多。这里不做记录。

    Struts2 标签例子链接: http://pan.baidu.com/s/1pKIPN6r 密码: 5ht5

    Struts2 UI theme 相关示例:

    链接1: http://pan.baidu.com/s/1o8tzDbk 密码: dn49

    链接2: http://pan.baidu.com/s/1c12rnoO 密码: fn2k

    链接3: http://pan.baidu.com/s/1dF5npO9 密码: wwxd

    链接4: http://pan.baidu.com/s/1jHAS0QU 密码: ua4u

  • 相关阅读:
    【PKUSC2019】线弦图【计数】【树形DP】【分治FFT】
    【PKUSC2019】树染色【线段树合并】【树形DP】
    [LibreOJ 3124]【CTS2019】氪金手游【容斥原理】【概率】【树形DP】
    [LibreOJ 3119]【CTS2019】随机立方体【计数】【容斥】
    SQLServer DBA 三十问(加强版)
    解决The valid characters are defined in RFC 7230 and RFC 3986错误问题
    Oracle 11g AWR 系列五:如何生成 AWR 报告?
    转 抽象类和接口联系与区别
    [转][solr]
    【转】org.jdom.IllegalDataException: The data ""is not legal for a JDOM attribute: 0xb is not a legal 异常
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/6678105.html
Copyright © 2020-2023  润新知