java是否可以在JSF中包含一个文件夹中的所有javascripts文件?
我正在使用JSF2.0,并且正在寻找一种方法来包含页面上给定文件夹中的所有Java脚本,例如
<h:outputScript library="javascript" name="*.js" target="head" />
这种事情可能吗?我应该使用java代码编写自定义组件来实现这一点吗
谢谢你的帮助,
塞巴斯蒂安·特罗普
你可以在下面搜索框中键入要查询的问题!
我正在使用JSF2.0,并且正在寻找一种方法来包含页面上给定文件夹中的所有Java脚本,例如
<h:outputScript library="javascript" name="*.js" target="head" />
这种事情可能吗?我应该使用java代码编写自定义组件来实现这一点吗
谢谢你的帮助,
塞巴斯蒂安·特罗普
# 1 楼答案
好主意。JSF API不支持这一点,但在理论上,使用自定义脚本渲染器是可能的。我在这方面做了一些尝试,这确实是可能的。只需创建一个} ,以检查
MultiScriptRenderer
,其中extends ScriptRenderer
并覆盖^{name
属性是否包含*
通配符,然后通过扫描resources文件夹中与此模式匹配的文件来进行相应的处理以下是一个启动示例:
在} 注释在JSF 2.2中修复之前是不起作用的,对于这个特定的角落情况,请参见JSF issue 1748):
faces-config.xml
中注册它,如下所示(抱歉,^{在Mojarra 2.0.3上运行良好。可以使用
*.js
和prefix*.js
等模式。特定的代码示例仅与特定的JSF实现紧密耦合,以保存代码样板。它还要求在部署时扩展WAR,否则无法通过File#listFiles()
浏览目录(因此排除了某些(较旧的)servletcontainer版本/配置)。对于其他JSF实现,你必须扩展它的ScriptRenderer
,或者如果你想独立于实现的话,就编写一个全新的(不过这应该很简单,如果你有问题的话,可以看看标准的ScriptRenderer
源代码)