JAVA中关于EL表达式的一个坑【The function get must be used with a prefix when a default namespace is not specified】
写了个项目,到打包发布阶段得从MyEclipse导出然后放到Tomcat当中运行。
本来这是一个很简单的过程,完成这个项目的收尾工作就准备睡觉了,但将文件及代码压缩精简后,没想到一个删除功能出现了问题。
报错:The function get must be used with a prefix when a default namespace is not specified
本来以为可能是代码压缩代码出现了问题,但却始终也找不到问题,时间关系打算放弃,但还是一直在坚持。
经过一步步的排除,最终把问题确定在EL表达式上面,百度上也搜索了这个报错,但是却并没有有价值的结果。但一位歪果仁在同样报错的网友问题下的回复让我有了点灵感。
从坑里面爬出来还是非常高兴的,问题是出在一个EL表达式上面的:
原来的写法:
1 | <option value="${i.get(0) }">${i.get(1) }</option> |
修改后:
1 | <option value="${i[0] }">${i[1] }</option> |
i
的数据类型是 ArrayList<String>
因为MyEclipse自带的Tomcat版本为7.0+,而电脑当中安装的是6.0+,6.0和7.0在EL表达式解析方便还是有点区别,7.0支持直接调用 ArrayList.get(1)
方法,但6.0还只能用 ArrarList[1]
代替。