2014-05-23 53 views
1

CombinedResourceHandler可能忽略RichFaces JS文件嗎?排除CombinedResourceHandler中的RichFaces JS文件

當我讓omnifaces結合所有的JS文件,包括與RichFaces的優化RichFaces的關

<context-param> 
    <param-name>org.richfaces.resourceOptimization.enabled</param-name> 
    <param-value>false</param-value> 
</context-param> 

我得到下面的異常

SEVERE: Error Rendering View[/login.xhtml] 
java.lang.UnsupportedOperationException 
    at org.richfaces.resource.ExternalStaticResource.getURL(ExternalStaticResource.java:90) 
    at org.omnifaces.resourcehandler.CombinedResourceInfo.loadResources(CombinedResourceInfo.java:229) 
    at org.omnifaces.resourcehandler.CombinedResourceInfo.getLastModified(CombinedResourceInfo.java:303) 
    at org.omnifaces.resourcehandler.CombinedResource.getRequestPath(CombinedResource.java:92) 
    at com.sun.faces.renderkit.html_basic.StylesheetRenderer.encodeEnd(StylesheetRenderer.java:106) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    at com.sun.faces.renderkit.html_basic.HeadRenderer.encodeHeadResources(HeadRenderer.java:105) 
    at com.sun.faces.renderkit.html_basic.HeadRenderer.encodeEnd(HeadRenderer.java:92) 
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) 
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) 
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at com.caucho.server.webbeans.ConversationJsfViewHandler.renderView(ConversationJsfViewHandler.java:81) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at org.apache.myfaces.extensions.cdi.jsf2.impl.listener.phase.CodiLifecycleWrapper.render(CodiLifecycleWrapper.java:126) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    ... 

但是,無論我在上下文PARAM org.omnifaces.COMBINED_RESOURCE_HANDLER_EXCLUDED_RESOURCES進入,我無法排除任何Richfaces資源。我試過參數值如

<param-value>richfaces:richfaces.js, richfaces:richfaces-queue.js, richfaces:richfaces-base-component.js</param-value> 

回答

2

您需要提供確切的資源標識符。這些不是有效的RichFaces資源標識符。你似乎已經猜到了。當不是使用CombinedResourceHandler時,您可以通過查看生成的HTML輸出輕鬆地確定它們。鑑於的*.xhtml/playground和JSF映射上下文路徑,它會是這個樣子:

<script type="text/javascript" src="/playground/javax.faces.resource/richfaces.js.xhtml"></script> 
<script type="text/javascript" src="/playground/javax.faces.resource/richfaces-base-component.js.xhtml"></script> 

的部分/javax.faces.resource/沒有 JSF映射後的資源名稱。 ln請求參數中的部分是資源庫(但是,正如您可能觀察到的,RichFaces沒有!)。如果沒有庫,則資源標識符由library:name表示法表示,或者僅表示name

所以,這應該爲你做:

<context-param> 
    <param-name>org.omnifaces.COMBINED_RESOURCE_HANDLER_EXCLUDED_RESOURCES</param-name> 
    <param-value>richfaces.js, richfaces-queue.js, richfaces-base-component.js</param-value> 
</context-param> 

注意,不服從資源庫(和家釀在它的另一層)確實是RichFaces的一個嚴重的錯誤。又見等等What is the JSF resource library for and how should it be used?


無關的具體問題,使用RichFaces的4.3.6我不能重現問題39了。請隨時在GitHub處重新打開此問題,並附帶提供從完全空白的項目開始重現問題所需的最少信息。

+0

感謝您的快速回復。我必須承認,我確實試圖猜測參數值,因爲沒有任何東西可以工作,但即使沒有資源標識符(如「richfaces.js」)的值也沒有效果。他們似乎總是結合在一起。 – Stevanicus

+0

p.s我在web.xml中定義了上下文參數 – Stevanicus

+0

適用於我。您是否閱讀並理解了解釋如何確定它們的第一部分答案?你有沒有在你的特定情況下應用這些信息?無論如何,您最好從一個完全空白的項目(例如RichFaces版本等)開始講述自己重現問題所需的最少信息。 – BalusC

相關問題