我正在使用:
我导入了标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
当我打电话时:
<h:outputText value="#{fn:indexOf('ciao','i')}"></h:outputText>
输出为 1
当我使用
<t:outputText value="#{fn:indexOf('ciao','i')}"></t:outputText>
它引发服务器异常,就像引用正确的库时存在一些问题。
javax.el.ELException: Function 'fn:indexOf' not found
at org.apache.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:171)
at org.apache.el.parser.SimpleNode.accept(SimpleNode.java:145)
at org.apache.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:133)
at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:147)
任何提示?谢谢大家的帮助:)
最佳答案
我能够在 Tomcat 6.0.18 上使用 Mojarra 1.2_14 和 Tomahawk 1.1.9 准确重现这个问题。同样的问题也出现在Tomcat 6.0.20,虽然org.apache.el.*
的行号堆栈跟踪中的方法略有不同。
排除Tomcat的jsp-el
出于怀疑,我也在 Glassfish v3 上进行了测试,它使用了不同的 EL impl。它产生了基本相同的异常,尽管堆栈跟踪中有不同的 EL 类( com.sun.el.*
而不是 org.apache.el.*
)。
然而,有趣的事实是,正如 Bozho 所评论的那样,当使用 Facelets 而不是 JSP 时,它确实可以完美运行。这意味着 Tomcat 和 Glassfish 的 JSP EL 实现都被破坏了。
我将在这里开始为 Tomcat 6 提交问题 http://tomcat.apache.org/bugreport.html看看 Apache 的人是怎么说的。
关于jsf - Tomahawk 标签中表达式语言函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2093379/