JAVA中关于EL表达式的一个坑【The function get must be used with a prefix when a default namespace is not specified】

http://img.ex666.cn/gid86/cover.jpg

写了个项目,到打包发布阶段得从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] 代替。