4

我在用着:

  • 雄猫 6.0
  • Jsf 1.2 - Mojarra 实现
  • 战斧 1.1.9

我导入了标签库

<%@ 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)

有什么提示吗?谢谢大家的帮助:)

4

1 回答 1

1

我能够在 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。com.sun.el.*它产生了基本相同的异常,尽管在堆栈跟踪(而不是)中有不同的 EL 类org.apache.el.*

然而,有趣的事实是,正如 Bozho 所评论的那样,当使用 Facelets 而不是 JSP 时,它确实可以完美地工作。这意味着 Tomcat 和 Glassfish 的 JSP EL 实现都被破坏了。

我将在http://tomcat.apache.org/bugreport.html开始为 Tomcat 6 提交问题,并查看 Apache 人员对此有何评论。

于 2010-01-22T12:18:44.513 回答