POST 和 GET 中的 Omnifaces CombinedResourceHandler 命令

Omnifaces CombinedResourceHandler order in POST and GET

我单独使用 CombinedResourceHandler

<application>         
    <resource-handler>org.omnifaces.resourcehandler.CombinedResourceHandler</resource-handler>
</application>

有一些排除的资源:

<context-param>
    <param-name>org.omnifaces.COMBINED_RESOURCE_HANDLER_EXCLUDED_RESOURCES</param-name>
    <param-value>
        font-awesome/4.3.0/css/font-awesome.min.css
    </param-value>
</context-param>

我有这个简单的页面:

<f:view contentType="text/html" >
    <h:head>
        <h:outputStylesheet library="primefaces-bootstrap" name="theme.css" />
        <h:outputStylesheet name="css/icons/icons.css"/>
        <h:outputStylesheet  name="font-awesome/4.3.0/css/font-awesome.min.css" />
    </h:head>
    <h:body>
        <o:form>
            <o:messages></o:messages>
            <h:inputText required="true" id='somefield'/>
            <h:commandButton></h:commandButton>
        </o:form>
    </h:body>
</f:view>

当请求为 GET 时,我有这个 css 订单(生产模式):

    <link type="text/css" rel="stylesheet" href="/travelc/javax.faces.resource/theme.css.xhtml?ln=primefaces-bootstrap"/>
    <link rel="stylesheet" type="text/css" href="/travelc/javax.faces.resource/eNorKMrMTU1LTE4t1k3Kzy8pLilKLLAqyUjNTdVLLi6uAWL9zOT8PCgJEgMA_HITwQ.css.xhtml?ln=omnifaces.combined&amp;v=1441782365350"/>
    <link rel="stylesheet" type="text/css" href="/travelc/javax.faces.resource/font-awesome/4.3.0/css/font-awesome.min.css.xhtml"/>

什么时候 POST:

    <link type="text/css" rel="stylesheet" href="/travelc/javax.faces.resource/theme.css.xhtml?ln=primefaces-bootstrap"/>
    <link rel="stylesheet" type="text/css" href="/travelc/javax.faces.resource/font-awesome/4.3.0/css/font-awesome.min.css.xhtml"/>
    <link rel="stylesheet" type="text/css" href="/travelc/javax.faces.resource/eNorKMrMTU1LTE4t1k3Kzy8pLilKLLAqyUjNTdVLLi6uAWL9zOT8PCgJEgMA_HITwQ.css.xhtml?ln=omnifaces.combined&amp;v=1441782365350"/>

这会破坏页面。我怎样才能防止这种情况发生?

我正在使用 omnifaces 最新快照和 myfaces 2.2.8

我转载了。 MyFaces 在这里发挥作用。它适用于 Mojarra。

在回发时,组合资源仍然存在于组件树中,必须提取并重新组合(只是为了涵盖任何资源在回发期间有条件 added/removed 的情况)。但是,由于逻辑错误,组合资源是新创建的并添加到末尾,而不是重复使用之前找到它的组合资源位置,确认您看到的症状。如果您将资源排除在组合之外,导致存在多个资源,则该错误只会引起注意。它在 Mojarra 中工作,因为组件 ID 相同。

逻辑错误已根据 this commit 修复,并根据今天最新的 OmniFaces 2.2 快照提供。