Tomahawk标签中表达式语言功能的问题

时间:2010-01-19 12:23:09

标签: jsf function integration jstl tomahawk

我正在使用:

  • Tomcat 6.0
  • Jsf 1.2 - Mojarra Implementation
  • 战斧1.1.9

我导入了taglib

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

任何提示?谢谢大家的帮助:))

1 个答案:

答案 0 :(得分: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。它产生了基本相同的异常,尽管在堆栈跟踪中使用了不同的EL类(com.sun.el.*而不是org.apache.el.*)。

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

我会在这里http://tomcat.apache.org/bugreport.html开始为Tomcat 6提交一个问题,看看Apache的人对此有何看法。