JSP EL中LENGTH [...]和fn:length(...)之间的差异

时间:2010-11-09 14:20:41

标签: java jsp jstl el

LENGTH[...]和JSTL函数fn:length(...)之间有什么区别?

我试图搜索差异,但我没有看到任何使用第一个的例子。

以下是一个例子:

<c:when test="${object.field ne null || LENGTH[object.field] > 0}"> 
    <td valign="top">
        .....print something
    </td>
</c:when>

1 个答案:

答案 0 :(得分:7)

由于标准JSP / JSTL / EL中没有像LENGTH[...]这样的函数,因此无法区分这些差异。 fn:length()是获取StringObject[]Collection长度的唯一途径。

${fn:length(someCollection)}

根据你的(固定)示例

更新

<c:when test="${object.field ne null || LENGTH[object.field] > 0}"> 

我以前从未见过这个。看起来您的webapp / servletcontainer正在使用自定义EL解析器。如果这是真的,您应该看到它已在webapp的web.xml文件中声明。

无论如何,您更愿意在此处使用EL empty关键字。它不仅会检查null,还会检查StringObject[]Collection的长度。

<c:when test="${not empty object.field}"> 

此处无需fn:length()


括号符号[]依次是通过动态键访问属性的方式。 E.g。

${bean[propertyname]}

如果propertyname解析为“foo”,则上述内容与${bean.foo}实际上相同。它也经常用在范围内的Map个对象上。