LENGTH[...]和JSTL功能有fn:length(...)什么区别?
我试图搜索差异,但我没有看到任何使用第一个的例子.
这是一个例子:
<c:when test="${object.field ne null || LENGTH[object.field] > 0}">
<td valign="top">
.....print something
</td>
</c:when>
Run Code Online (Sandbox Code Playgroud)
由于没有像LENGTH[...]标准JSP/JSTL/EL那样的功能,因此不可能分辨出这些差异.这fn:length()是获得a String,a Object[]或者长度的唯一方法Collection.
${fn:length(someCollection)}
Run Code Online (Sandbox Code Playgroud)
根据您的(固定)示例进行更新:
<c:when test="${object.field ne null || LENGTH[object.field] > 0}">
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个.看起来您的webapp/servletcontainer正在使用自定义EL解析器.如果是这样,您应该看到它已在webapp的web.xml文件中声明.
无论如何,你更喜欢在empty这里使用EL 关键字.它不仅支票null,也为的长度String,Object[]或Collection.
<c:when test="${not empty object.field}">
Run Code Online (Sandbox Code Playgroud)
不需要在fn:length()这里.
支撑符号[]依次是通过动态键访问属性的方式.例如
${bean[propertyname]}
Run Code Online (Sandbox Code Playgroud)
如果propertyname解析为"foo",那么上面的确有效${bean.foo}.它也经常用在Map范围内的对象上.