jsf - javax.el.E​​LException : Function "rich:element" not found

标签 jsf richfaces el

从 Kubuntu 迁移到 OS X(购买了 MacBook)。使用以下内容设置环境来构建我的项目(从官方网站下载,而不是存储库):

  • Java SE(内部版本 1.7.0_60-b19)
  • Apache Maven 3.2.1
  • Apache Tomcat 7.054

项目技术栈:

  • Spring 框架 3.2.2.RELEASE
  • Hibernate 4.2.5.Final
  • Java Server Faces 2.2.0
  • RichFaces 4.3.1.Final
  • MySQL 5.6.19

使用 maven 构建在 Windows 7、Kubuntu 14.04 和 Mac OS X Mavericks 10.9.3 上运行正常。部署到 Apache Tomcat 7 上也一切顺利(没有错误,出现警告)。部署项目后,进入登录屏幕,加载主页,浏览项目 View ,直到到达发票页面,其中包含 #{rich:element('some_id')}.some_action() 。 渲染此页面时出现以下错误:

    ERROR com.skeds.core.component.exceptions.SkedsCustomExceptionHandler Function 'rich:element' not found
    javax.el.ELException: Function 'rich:element' not found
    at org.jboss.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:176)
    at org.jboss.el.parser.SimpleNode.accept(SimpleNode.java:129)
    at org.jboss.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:138)
    at org.jboss.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:152)
    at org.jboss.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:195)
    at org.jboss.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:68)
    at com.sun.faces.facelets.el.ELText$ELTextVariable.apply(ELText.java:203)
    at com.sun.faces.facelets.el.ELText$ELTextComposite.apply(ELText.java:184)
    at com.sun.faces.facelets.compiler.TextInstruction.apply(TextInstruction.java:96)
    at com.sun.faces.facelets.compiler.UIInstructionHandler.apply(UIInstructionHandler.java:141)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)

I can go to one of another pages and sometimes can render Invoices page without this error, but still clicking on some another page with this EL gives the same error.

What was tried:

  1. Deployed on different Tomcat versions (7.054, 7.050, 7.053).
  2. Built with different Maven versions (3.2.1, 2.0.4).
  3. Was using different Java SDK versions (1.6, 1.7, 1.8).
  4. During code investigation found the following dependency fail at the org.richfaces.function.RichFunction class:

    import org.richfaces.cdk.annotations.Function;
    

    这是最可能的错误原因。在我的 pom.xml 中添加了以下依赖项:

    <dependency>
        <groupId>org.richfaces.cdk</groupId>
        <artifactId>annotations</artifactId>
        <version>4.3.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
    

    IDE 预编译器显示依赖性已解决。 mvn clean install并且重新部署项目没有结果。出现同样的错误。

  5. 在谷歌搜索可能的解决方案时,看到了 el-api.jdk 的问题在项目类路径中的某些包内。在tomcat7 lib目录下有一个el-api.jdk ,在pom.xml可能包含 el-api.jdk 的依赖项存在三个排除项这可能会发生冲突。也可在target/WEB-INF/lib目录中没有el-api.jdk也可能发生冲突的文件。
  6. 在 Google Chrome 和 OS X Safari 中打开项目 - 最后一个错误较少,但错误仍然存​​在。
  7. 从 Git 克隆项目三次,执行完整安装说明,从 IDE Intellij IDEA 13(最新更新)和终端构建和运行 - 将 .war 复制到/webapps 并运行 catalina.sh 。还尝试过 mvn package -DskipTests jetty:run - 所有选项都给出相同的结果。

编辑:问题出现在 kubuntu 14.04 和 ubuntu 12.10 上。还在 Windows 7 上进行了测试 - 同样的问题。所以这不是基于操作系统的错误。

如有任何建议,我们将不胜感激。

最佳答案

已解决。正如往常发生的那样,问题的起因完全是愚蠢的。 Intellij IDEA 可以选择自动清理 JSF .xhtml View 上未使用的命名空间。发票页面包含一个包含 #{rich:element('some_id')} 的包含项内,但 Rich Function 不是实际的命名空间用法,例如标记名 <rich:calendar> 。这就是 Idea 在项目重建之一中清理它的原因。命名空间xmlns:rich="http://richfaces.org/rich"仅在外部invoices.xhtml 中定义。在没有声明命名空间的情况下渲染内部包含会导致 RestoreView 阶段因给定错误而崩溃。

关于jsf - javax.el.E​​LException : Function "rich:element" not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24385922/

相关文章:

java - 附加版本的css文件

richfaces - 页面中的 F5 或刷新调用是回发吗?

jsp - 如何在 JSF EL 中创建数组?

jsf - NetBeans - Web 应用程序 - 网页子文件夹

css - 管理 JSF 中资源加载的顺序

java - 将外部库与 Nashorn Javascript 引擎结合使用

java - 使用 JSTL 出现此错误 : javax. el.PropertyNotFoundException

java - RichFaces 丰富 :tree nodeSelectListener not being listened to

jsf - Facelet 被修改消息

jsf - 在 JSF 页面中定义和重用 EL 变量