1

CombinedResourceHandlerRichFaces JS ファイルを無視することは可能ですか?

Richfaces 最適化をオフにした RichFaces を含むすべての JS ファイルを omnifaces に結合させると、

<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>
4

1 に答える 1

2

正確なリソース識別子を指定する必要があります。これらは有効な RichFaces リソース識別子ではありません。あなたはそれらを推測したようです。を使用していないときに、生成された HTML 出力を確認することで、それらを簡単に判断できますCombinedResourceHandler。のコンテキスト パス/playgroundと の JSF マッピングを指定すると、次の*.xhtmlようになります。

<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/ without 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 の重大な間違いであることに注意してください。とりわけ、JSFリソース・ライブラリーは何のためにあり、どのように使用する必要がありますか?も参照してください。


具体的な質問とは関係ありませんが、RichFaces 4.3.6 を使用して問題 39 を再現することはできません完全に空のプロジェクトから始めて、自分で問題を再現するために必要な最小限の情報とともに、GitHubで問題を自由に再オープンしてください。

于 2014-05-23T08:53:19.287 に答える