为什么我们不能独立使用JSTL的fn标签,就像core标签一样

Why can't we use JSTL fn tags independently, just like core tags

如果 functions 标签库也是 JSTL 的一部分那么为什么我们不能(或不)像其他标签一样使用它们?例如,使用 core 我们可以这样说?

<c:if test="1==1">
    <h3>Render this if 1==1</h3>
 </c>

为什么我们不能像这样用函数做同样的事情?

<fn:...

我们只能在 ${} 中使用它们吗?

这里有演示。

<%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
    <head></head>
    <body>
          ${fn:toUpperCase("jstl")}  
          ||${fn:substring(fn:toUpperCase(fn:trim("    xxxjstl    ")), 3, 7)}||
    </body>
</html>

输出: 江苏科技研究院||江苏科技研究院||

你说得对。 JSTL 函数 (fn) 只能在 ${ } 内部使用,因为它会影响或产生变量的值。例如,如果我想知道名为 'array'

的数组的大小
<c:out value="${fn:length(array)}" />

使用像 <c:xxx ... /> 这样的 JSTL 标签,您可以处理和定义变量。 在 ${ } 中,您处理变量的值