在POST和GET中Omnifaces CombinedResourceHandler命令

时间:2015-09-30 14:50:48

标签: jsf-2.2 myfaces omnifaces

我单独使用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

1 个答案:

答案 0 :(得分:1)

我复制了它。 MyFaces在这里发挥作用。它适用于Mojarra。

在回发时,组合资源仍然存在于组件树中,并且必须被提取并重新组合(仅用于覆盖在回发期间有条件地添加/删除任何资源的情况)。但是,由于逻辑错误,组合资源是新创建的并添加到最终,而不是重新使用找到它的早期组合资源位置,从而确认您看到的症状。如果您从合并中排除资源,导致存在多个资源,则该错误才会明显。它在Mojarra中有效,因为组件ID是相同的。

逻辑错误根据this commit修复,可根据今天最新的OmniFaces 2.2快照获取。