zoukankan      html  css  js  c++  java
  • struts2 标签的使用之一 s:if

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

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

     <taglib>
            <taglib-uri>/struts-tags</taglib-uri>
            <taglib-location>/WEB-INF/lib/*.jar</taglib-location>
        <taglib>
    B:在jsp 导入标签的dingyi
    
      <%@ 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}

    用法
    A:直接写表达式

     <s:set name='china' value='china'>
        <s:if test="${china=='china'}">show</s:if>
        result:  show
        <s:set name="count" value="99">
        <s:if test="${count>0}">bigger than 0</s:if>
        <s:else>not</s:else>
        result:  bigger than 0

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

     <s:iterator id="id" value="label">
            <s:if test="%{#id.attrValueId!=0}">
                <s:property value="#id.attrValue" />
                        <s:property value="#id.countAll" />                 <s:property value="#id.countRequest" /> 
            </s:if>
            <s:else>
                <s:property value="#id.attrValue" />
            </s:else>
        </s:iterator>

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

    C:直接读取对象

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

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

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

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

    E:多个条件的判断

      <s:if test='%{isShowAll=="Y"||isShowAll==null||isShowAll==""}'>
            <li class="selected">
        </s:if>
        <s:else>
            <li>else
        </s:else>

    isShowAll 为Action 里面的字符串属性

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

      private boolean choosed = true;
        public boolean isChoosed(){
            return choosed;
        }
        <s:if test="choosed"></s:if>

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

     public String getChoosed(){
            return "true";
        }

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

    二、判断相关的问题

     A:判断字符串的问题:

      1、判断单个字符:

      这样是从session中取出username的值,并且判断其是否为c,但是这样判断是不正确的,这样判断的话,根本判断不出来,要改成下面这样:

      

      这样判断才能正确判断,至于原因我也不知道,在网上看到struts2中可能它判断的是char类型。

      2、判断字符串:

      这样写的就是判断username是不是milo,是String的判断,这个是不用加toString()的。

      3、判断数值:

      这样写的就是判断username是不是0,是int的判断。

      B:判断为空的问题:

      

      struts2中的判空似乎只能这么写

      判断非空可以这样写:

      

      ps:如果从action中取属性值,test中的属性值前面的’#’不需要,action中的属性与jsp中的属性是互通的。

      ————————————————————————————————————————————————————

      字符串N一定要用“”双引号包含,从test的包含则用单引号 ‘ ’,如果相反,则不能正确判断该属性是否与该字符串相等。
      
    C:比较中文字符串:

    当比较中文字符串时,此时需要对中文数据进行转换

    可以比较,但是:
    永远都为FALSE,无论isImg中的值是否为’是’或’否’.
    则可以进行比较,当isImg的值为’是’时返回true。

    三、

    1 <s:set name="age" value="61"/> 页面通过set赋值 同时在页面上判断
    2 <s:if test="${age > 60}">
    3 老年人
    4 </s:if>
    5 <s:elseif test="${age > 35}">
    6 中年人
    7 </s:elseif>
    8 <s:elseif test="${age > 15}" id="wawa">
    9 青年人
    10 </s:elseif>
    11 <s:else>
    12 少年
    13 </s:else>
    14 2 从后台数据库中取出值通过对对象传到页面
    15 <s:if test="psInfoDO.employeetype==0">正式员工 </s:if>
    16 <s:elseif test="psInfoDO.employeetype==1">外包 </s:elseif>
    17 <s:elseif test="psInfoDO.employeetype==2">实习生</s:elseif>
    18 3
    19 <s:set name="name" value="<%="'"+ request.getParameter("name")+"'" %>"/>
    20 <%
    21 System.out.println(request.getParameter("name"));
    22 %>
    23 <s:if test="#name=='zhaosoft'">
    24 zhaosoft here
    25 </s:if>
    26 <s:elseif test="#name=='zxl'">
    27 zxl here
    28 </s:elseif>
    29 <s:else>
    30 other is here
    
    31 </s:else>
  • 相关阅读:
    在日本被禁止的コンプガチャ設計
    Starling常见问题解决办法
    Flixel引擎学习笔记
    SQLSERVER中修复状态为Suspect的数据库
    T4 (Text Template Transformation Toolkit)实现简单实体代码生成
    创建Linking Server in SQL SERVER 2008
    Linq to Sql 与Linq to Entities 生成的SQL Script与分页实现
    Linq to Entity 的T4 模板生成代码
    在VisualStudio2008 SP1中调试.net framework 源代码
    使用HttpModules实现Asp.net离线应用程序
  • 原文地址:https://www.cnblogs.com/lllini/p/11955369.html
Copyright © 2011-2022 走看看