Jsf 在CustomComponent的EL中找不到Omnifaces标记库

Jsf 在CustomComponent的EL中找不到Omnifaces标记库,jsf,jboss,wildfly,el,omnifaces,Jsf,Jboss,Wildfly,El,Omnifaces,我目前正在将一个webapp从JBoss 7.1升级到Wildfly 10.1,在那里我遇到了一个相当棘手的问题,即在自定义组件中的表达式语言中的taglib解析 我设法解决了这个问题,这显然可以归结为一个事实,即JSFs ExpressionBuilder无法找到自定义组件中定义的正确名称空间,因此抱怨它对Omnifaces标记库一无所知: javax.el.ELException: Function 'of:format1' not found at com.sun.el.lang.Expr

我目前正在将一个webapp从JBoss 7.1升级到Wildfly 10.1,在那里我遇到了一个相当棘手的问题,即在自定义组件中的表达式语言中的taglib解析

我设法解决了这个问题,这显然可以归结为一个事实,即JSFs ExpressionBuilder无法找到自定义组件中定义的正确名称空间,因此抱怨它对Omnifaces标记库一无所知:

javax.el.ELException: Function 'of:format1' not found
at com.sun.el.lang.ExpressionBuilder.visit(ExpressionBuilder.java:275)
at com.sun.el.parser.SimpleNode.accept(SimpleNode.java:172)
at com.sun.el.lang.ExpressionBuilder.prepare(ExpressionBuilder.java:227)
at com.sun.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:238)
at com.sun.el.lang.ExpressionBuilder.createValueExpression(ExpressionBuilder.java:295)
at com.sun.el.ExpressionFactoryImpl.createValueExpression(ExpressionFactoryImpl.java:112)
at org.jboss.weld.util.el.ForwardingExpressionFactory.createValueExpression(ForwardingExpressionFactory.java:53)
at org.jboss.weld.el.WeldExpressionFactory.createValueExpression(WeldExpressionFactory.java:48)
at org.jboss.weld.util.el.ForwardingExpressionFactory.createValueExpression(ForwardingExpressionFactory.java:53)
at org.jboss.weld.el.WeldExpressionFactory.createValueExpression(WeldExpressionFactory.java:48)
at com.sun.faces.facelets.el.ELText.parse(ELText.java:411)
at com.sun.faces.facelets.el.ELText.parse(ELText.java:342)
有趣的是,只有在
of:format1
中内联嵌套EL表达式的求值时才会发生这种情况

可以在A找到一个可以重现问题的最小示例,但以下是我的自定义组件的相关代码:

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:cc="http://xmlns.jcp.org/jsf/composite"
      xmlns:of="http://omnifaces.org/functions">

<h:head>
    <title>Testing EL</title>
</h:head>

<h:body>
    <cc:interface>
        <cc:attribute name="model" type="sandbox.eltest.model.Entity" required="true" />
    </cc:interface>

    <cc:implementation>
        <div id="#{cc.clientId}">
            <c:set var="value" value="#{cc.attrs.model.value}" />
            #{of:format1('Hello {0}', value)} <!-- Prints "Hello World" correctly -->
            #{of:format1('Hello {0}', cc.attrs.model.value)} <!-- THROWS javax.el.ELException -->
        </div>
    </cc:implementation>
</h:body>

</html>

测试EL
#{of:format1('Hello{0}',value)}
#{of:format1('Hello{0}',cc.attrs.model.value)}

第二个版本的内联
cc.attrs.model.value
用于JBoss7.1。在Wildfly 10.1中,我遗漏了什么?

异常可以识别为Mojarra特定XML名称空间错误的结果。尝试移动
xmlns:of=”http://omnifaces.org/functions“
转换为
,或者可能是
以排除一个和另一个。不幸的是,这并不能解决问题。据我所知,Wildfly附带了一个
jsf-impl-2.2.13.SP1.jar
。将其更新到2.2.14会解决XML名称空间错误吗?@BalusC尝试移动工作空间并更新
jsf impl
。这两个都不起作用……你解决了吗?我在mojarra 2.3.3操作中遇到了同样的问题,不幸的是,我们不得不在这个特定的项目中更改所有EL表达式。诸如此类的事情是我对JSF不太满意并尽可能避免它的原因之一。尝试移动
xmlns:of=”http://omnifaces.org/functions“
转换为
,或者可能是
以排除一个和另一个。不幸的是,这并不能解决问题。据我所知,Wildfly附带了一个
jsf-impl-2.2.13.SP1.jar
。将其更新到2.2.14会解决XML名称空间错误吗?@BalusC尝试移动工作空间并更新
jsf impl
。这两个都不起作用……你解决了吗?我在mojarra 2.3.3操作中遇到了同样的问题,不幸的是,我们不得不在这个特定的项目中更改所有EL表达式。这类事情是我对JSF不太满意的原因之一,我会尽量避免使用它。