• struts2 标签的使用之一 s:if


    struts2 的web 项目中为了方便的编写jsp,标签是最好的选择

    1:struts2 标签库的定义在**-core-版本号.jar META-INF 路径下找到struts-tags.tld文件;使用该标签需要在web 项目里面导入标签库:
        A:在web.xml文件  (默认 可以省略)

    1. <taglib>
    2.     <taglib-uri>/struts-tags</taglib-uri>
    3.     <taglib-location>/WEB-INF/lib/*.jar</taglib-location>
    4. <taglib>

        B:在jsp 导入标签的dingyi

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

    注意uri要一直,上面定义的是默认写法
     
    2:OGNL struts2 利用了内建的ognl表达式,它基于XWork,增加了对ValueStack的支持
    ,在jsp里面通过ognl访问属性,struts2会自动搜寻栈内的所有实体。直到找到位置。
    如:#person.address.ip 等于 person.getAddress().getIp();翻译结果为条用get方法
    或是jstl的${person.address.ip}

    <s:if>用法
    A:直接写表达式

    1. <s:set name='china' value='china'>
    2. <s:if test="${china=='china'}">show</s:if>
    3. result:  show
    4. <s:set name="count" value="99">
    5. <s:if test="${count>0}">bigger than 0</s:if>
    6. <s:else>not</s:else>
    7. result:  bigger than 0

    B:在遍历里面使用判断:

    1. <s:iterator id="id" value="label">
    2.     <s:if test="%{#id.attrValueId!=0}">
    3.         <s:property value="#id.attrValue" />
    4.                 <s:property value="#id.countAll" />                 <s:property value="#id.countRequest" /> 
    5.     </s:if>
    6.     <s:else>
    7.         <s:property value="#id.attrValue" />
    8.     </s:else>
    9. </s:iterator>

    label是一个List<Attribu>  Attribu 包含属性attrValueId和countAll
    在s:iterator域内这是id的值是"id",使用ognl读取遍历对象的方法是 #id
    test="%{#id.attrValueId!=0}" 看子对象的属性attrValueId是否为0
    <s:property value="#id.attrValue" /> 打印子对象的attrValue属性

    C:直接读取对象

    1. <s:if test="request.price==null||request.price<=0">
    2. </s:if>

    读取对象request,判断price是否小于0;
    request 可以是如何的javaBean,也可以是基本属性

    D:直接读取对象的另一种写法

    1.  <s:if test="%{aTransactionSummaryBean!=null}">

    E:多个条件的判断

    1. <s:if test='%{isShowAll=="Y"||isShowAll==null||isShowAll==""}'>
    2.     <li class="selected">
    3. </s:if>
    4. <s:else>
    5.     <li>else
    6. </s:else>

    isShowAll 为Action 里面的字符串属性

    F:直接拿Action里面的boolean 貌似不xing
    Action里面

    1. private boolean choosed = true;
    2. public boolean isChoosed(){
    3.     return choosed;
    4. }
    5. <s:if test="choosed"></s:if>

    发现这个判断无法正确运行,也许是ognl 是通过get方法来获取对象的,如果在action 里面有下面的方法;

    1. public String getChoosed(){
    2.     return "true";
    3. }

    上面那个s:if可以正确执行 
    最后注意一点:ognl和jstl标签不能互相嵌套

  • 相关阅读:
    Linux route
    python 实现自定义切片类
    python 自省机制
    python 实例方法、静态方法、类方法
    python 动态语言和协议编程
    python 鸭子类型
    信息论
    CRF keras代码实现
    CRF 详细推导、验证实例
    attention 汇总(持续)
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/4752368.html
Copyright © 2020-2023  润新知