我刚把我的应用程序从glassfish移到TomEE,包括从mojarra移动到myfaces。到目前为止,我遇到了一些我可以解决的问题,但我不知道如何解决这个问题。
如果我使用CDNResourceHandler并且PROJECT_STAGE是Production,我会得到一个NullPointerException(它在开发模式下工作正常)
java.lang.NullPointerException
javax.faces.application.ResourceWrapper.getLibraryName(ResourceWrapper.java:94)
org.apache.myfaces.renderkit.html.HtmlScriptRenderer.encodeEnd(HtmlScriptRenderer.java:259)
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:674)
javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:554)
org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:84)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:596)
javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:526)
资源是(org.omnifaces.resourcehandler.CDNResourceHandler $ 1)https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css
代码的相关部分
faces-config.xml中
<application>
<resource-handler>org.omnifaces.resourcehandler.UnmappedResourceHandler</resource-handler>
<resource-handler>org.omnifaces.resourcehandler.CDNResourceHandler</resource-handler>
</application>
的web.xml
<context-param>
<param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name>
<param-value>bootstrap-cdn:bootstrap/3.2.0/js/bootstrap.min.js=//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js,
bootstrap-cdn:font-awesome/4.1.0/css/font-awesome.css=//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.css,
bootstrap-cdn:bootstrap/3.2.0/css/bootstrap.min.css=//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css,
cloudflare-cdn:meyer-reset/2.0/reset.min.css=https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css.....
Omnifaces 1.8.1(也尝试使用2.0-SNAPSHOT) Myfaces 2.2.3
答案 0 :(得分:1)
MyFaces需要原始资源的库和资源名称,以便它可以将资源标记为“已经渲染”(以防止重复渲染)。但是,CDNResourceHandler
未通过getWrapped()
返回原始资源。
这是fixed,可按current snapshot提供。将来,当您在使用OmniFaces时遇到异常时,您最好report an issue。