LENGTH[...]
和JSTL函数fn:length(...)
之间有什么区别?
我试图搜索差异,但我没有看到任何使用第一个的例子。
以下是一个例子:
<c:when test="${object.field ne null || LENGTH[object.field] > 0}">
<td valign="top">
.....print something
</td>
</c:when>
答案 0 :(得分:7)
由于标准JSP / JSTL / EL中没有像LENGTH[...]
这样的函数,因此无法区分这些差异。 fn:length()
是获取String
,Object[]
或Collection
长度的唯一途径。
${fn:length(someCollection)}
更新:
<c:when test="${object.field ne null || LENGTH[object.field] > 0}">
我以前从未见过这个。看起来您的webapp / servletcontainer正在使用自定义EL解析器。如果这是真的,您应该看到它已在webapp的web.xml
文件中声明。
无论如何,您更愿意在此处使用EL empty
关键字。它不仅会检查null
,还会检查String
,Object[]
或Collection
的长度。
<c:when test="${not empty object.field}">
此处无需fn:length()
。
括号符号[]
依次是通过动态键访问属性的方式。 E.g。
${bean[propertyname]}
如果propertyname
解析为“foo”,则上述内容与${bean.foo}
实际上相同。它也经常用在范围内的Map
个对象上。