@Balusc 回应说“好吧,不是错误,而是监督和规范失败”。似乎部署在库中的 css 资源无法使用 mojarra 2.2.14 进行版本控制。这样对吗?我尝试使用自定义 ResourceHandler 实现您的解决方案,但 getWrapped().createResource(resourceName, libraryName) 返回的资源始终返回 null。似乎 createResource() 尝试使用路径 /META-INF/resources/ 查找库的资源(如 css/layout.css),但它缺少版本。
为了解决这个问题,我已经覆盖了自定义 ResourceHandler 上的 createResource 方法,该方法扩展了 Omnifaces DefaultResourceHandler 以将版本前缀添加到 resourceName
@Override
public Resource createResource(String resourceName, String libraryName) {
if (libraryName != null && libraryName.equals(LIBRARY_NAME)) {
if (!resourceName.startsWith(version)) {
resourceName = version + "/"+resourceName;
}
}
return super.createResource(resourceName, libraryName);
}
使用此解决方法,生成的链接看起来像
<link type="text/css" rel="stylesheet" href="/javax.faces.resource/1_0_3/css/layout.css?ln=common&v=1_0_3"/>
对于 outputStylesheet 声明
<h:outputStylesheet library="common" name="css/layout.css" />
我不确定这是最好的解决方法。