• 使用jstl+el表达式遇到的几个问题


    1、使用jstl访问Map<Integer,String>中的内容时总取不到?

    el表达式的一个bug,在解析数字的时候,会自动将数字转换成Long类型。

    我的解决办法是,Map的key改成String类型。那如果这个key是我从别处取出来的,取出来就是Integer的怎么办?

    那只能想办法把这个key转换成字符串类型以后再使用它从Map中取值。这直接引出了2中的问题。

    2、在jstl的定义式中如何像在java中一样使用 i+""的方式将整型转为字符串型?

    <c:set var="key" value="${parentMenu.sysMenuId}${''}"></c:set>

    说明:${parentMenu.sysMenuId}${''}这种方式貌似是el的字符串拼接方式,我这样尝试结果证明是对的。

    3、如果在页面中${someMap}表示一个Map,${someKey}代表某个key,那我怎么写取值表达式?

    说明:我们都知道${someMap[key]}是取值的方式,但如果你直接这么写${someMap[${someKey}]}是无法编译的。

    正确的写法是${someMap[someKey]},是的,外面如果已经有了${}里面就没必要写了,这貌似是个规律。

    4、如何判断一个集合是否为null?如何取得一个集合的size?

    (1)判断一个集合是否为null:<c:when test='${not empty sms}'> ...,切记不要忘了${},据说${!empty sms}这种写法也可以,没试。

    (2)如何取得一个集合的size:${fn:length(sms)},这个fn也是jstl的标签,

    但必须在jsp页面中多引入一个标签库的声明,和常用的c标签库加起来以后像这样:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

    (3)我们一般判断一个集合有内容时,不但要判断其是否为空,而且同时要求size>0,那这个怎么写呢?

    根据3中的经验,外面如果已经有了${}里面就没必要写了,所以这么写:

    <c:when test='${not empty sms and fn:length(sms) > 0}'>

     5、jsp页面中,如何将日期类型的数据format成自己想要的数据

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

    <fmt:formatDate value="${assist.createTime}" type="both" pattern="yyyy/MM/dd hh:mm:ss" />

    fmt用法很多:http://blog.sina.com.cn/s/blog_4f925fc30102dyfe.html

  • 相关阅读:
    IntelliJ IDEA导包快捷键
    maven命令创建web骨架项目
    v2.0版本小程序开发心得(代码之外)
    装饰器模式
    闭包
    git diff的文字说明
    WSGI和CGI
    word-wrap、white-space和word break的区别
    Javascript中正则的 match、test、exec使用方法和区别
    Git 内部原理
  • 原文地址:https://www.cnblogs.com/mabaishui/p/5482556.html
Copyright © 2020-2023  润新知