我在windows7 x64上的glassfish 4,JSF 2.2下运行了一个java ee应用程序。 我注意到我的所有资源都使用了额外的 .xhtml 扩展程序。
例如:
/javax.faces.resource/bootstrap/css/bootstrap-theme.min.css.xhtml
而不是
/javax.faces.resource/bootstrap/css/bootstrap-theme.min.css
有没有办法删除额外的 .xhtml 扩展程序?
我想这样做的原因是为了避免修改我使用的所有外部js和css库中的路径。
答案 0 :(得分:2)
你应该看看OmniFaces UnmappedResourceHandler
此ResourceHandler实现允许开发人员在/javax.faces.resource/*的URL模式(基本上是ResourceHandler.RESOURCE_IDENTIFIER常量的值)上映射JSF资源,而无需额外的FacesServlet前缀或后缀URL模式在默认生成的资源URL中,例如/javax.faces.resource/faces/css/style.css或/javax.faces.resource/css/style.css.xhtml。此资源处理程序将生成未映射的URL,如/javax.faces.resource/css/style.css。这样做的主要优点是开发人员不再需要#{resource} EL表达式,以便正确引用CSS文件中图像的相对URL。
另外,请看一下这个Prevent suffix from being added to resources when page loads
您还可以使用以下方法从一个js
指向其他js
/ css
:
假设您要填充某些js对象的css
和js
属性:
css: $(document).find("link[href*='my-third-party-plugin']").attr("href"),
js: $(document).find("script[src*='my-third-party-plugin']").attr("src")