NullPointerException与omnifaces CDNResourceHandler和myfaces 2.2.3

时间:2014-08-06 15:22:54

标签: jsf omnifaces

我刚把我的应用程序从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

1 个答案:

答案 0 :(得分:1)

MyFaces需要原始资源的库和资源名称,以便它可以将资源标记为“已经渲染”(以防止重复渲染)。但是,CDNResourceHandler未通过getWrapped()返回原始资源。

这是fixed,可按current snapshot提供。将来,当您在使用OmniFaces时遇到异常时,您最好report an issue