Jsf 在CustomComponent的EL中找不到Omnifaces标记库
我目前正在将一个webapp从JBoss 7.1升级到Wildfly 10.1,在那里我遇到了一个相当棘手的问题,即在自定义组件中的表达式语言中的taglib解析 我设法解决了这个问题,这显然可以归结为一个事实,即JSFs ExpressionBuilder无法找到自定义组件中定义的正确名称空间,因此抱怨它对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
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不太满意的原因之一,我会尽量避免使用它。