我单独使用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&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&v=1441782365350"/>
打破了页面。我怎样才能防止这种情况发生?
我正在使用omnifaces最新快照和myfaces 2.2.8
答案 0 :(得分:1)
我复制了它。 MyFaces在这里发挥作用。它适用于Mojarra。
在回发时,组合资源仍然存在于组件树中,并且必须被提取并重新组合(仅用于覆盖在回发期间有条件地添加/删除任何资源的情况)。但是,由于逻辑错误,组合资源是新创建的并添加到最终,而不是重新使用找到它的早期组合资源位置,从而确认您看到的症状。如果您从合并中排除资源,导致存在多个资源,则该错误才会明显。它在Mojarra中有效,因为组件ID是相同的。
逻辑错误根据this commit修复,可根据今天最新的OmniFaces 2.2快照获取。