You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EL表达式中引用不符合命名规范的方法

EL表达式获取List长度的正确方法

原写法失效原因

EL中不带括号的.xxx语法遵循JavaBean属性访问规则,会自动匹配目标类的getXxx()方法。#{aList.size > 10}的写法会尝试查找List类的getSize()方法,但java.util.List仅提供size()实例方法,不存在符合JavaBean规范的getSize()访问器,因此无法正常执行。

可用解决方案

  • 容器支持EL 2.2及以上版本(Tomcat7+、Jetty8+等适配Servlet 3.0及以上规范的容器):直接在方法名后加括号显式调用方法即可,正确写法为
    #{aList.size() > 10}
    
    该写法直接调用List原生的size()方法,无需额外依赖。
  • 兼容低版本EL环境:使用JSTL提供的fn:length()函数,该函数原生支持获取集合、数组、Map、字符串的长度,兼容性覆盖绝大多数运行环境。使用前需要在页面引入JSTL函数标签库:
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    
    对应判断写法为
    #{fn:length(aList) > 10}
    
    这种写法不会受EL版本限制,也无需关心目标对象是List、数组还是其他集合类型,容错性更好。

注意:不要尝试在业务代码里给List自定义包装类加getSize()方法适配旧写法,会徒增不必要的代码维护成本。

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:36:21