我想将JScolor包含到我的jsf应用程序中。它可以通过<script>标签,但我的意思是,它是更多的系统通过<h:outputScript>。
然而,它并没有与资源协同工作。JSColor包含一个js文件和一些图片文件--看起来像是包含了js文件,却没有包含资源。
有人能告诉我为什么吗?如何解决这个问题呢?
谢谢。
发布于 2013-04-10 21:48:28
JS文件显然是通过不代表有效JSF资源URL的相对路径引用图片文件。
<h:outputScript>生成一个JSF资源URL,该资源URL通过JSF资源处理程序,该处理程序特别担心自动本地化和版本控制。它将生成一个以/javax.faces.resource为前缀的网址,并附加当前使用的FacesServlet网址映射,如*.xhtml或/faces/*。
因此,如果您将faces servlet映射到*.xhtml上,并且有一个包含JS和图像文件的/resources/jscolor文件夹,并且已经按如下方式引用了JS文件,
<h:outputScript name="jscolor/jscolor.js" />然后它会生成
<script type="text/javascript" src="/context/javax.faces.resource/jscolor/jscolor.js.xhtml"></script>但是,图像文件在/javax.faces.resource/jscolor文件夹中物理上不可用,而是在/resources/jscolor文件夹中物理可用。只有在资源名称上应用faces servlet映射时,才会自动解析/javax.faces.resource。因此,只有当您手动编辑jscolor.js文件以将图像文件名从arrow.gif更改为arrow.gif.xhtml时,此特定情况才有效。
如果您没有利用JSF资源解析器的任何自动本地化或版本控制特性,也没有使用任何特殊的自定义资源解析器,这些资源解析器需要实际的JSF资源而不是静态的HTML元素,比如this one,那么您也可以使用普通的HTML <script>元素而不是<h:outputScript>。
<script type="text/javascript" src="#{request.contextPath}/resources/jscolor/jscolor.js"></script>发布于 2013-04-10 21:31:54
我可能误解了你的问题,但这段代码将会有所帮助:
<script
type="text/javascript"
src="#{facesContext.externalContext.requestContextPath}/path/on/WebContent/foo.js"></script>我经常用这种java资源包含,而不是<h:outputScript>
发布于 2014-06-19 14:26:21
假设您的js文件(名为jquery.js的文件)进入resources/js文件夹的路径如下:
resources/js/jquery.js然后你必须写:
<h:outputScript name="./js/jquery.js" target="body"/>PS。注意属性目标(如头部、身体)
https://stackoverflow.com/questions/15926901
复制相似问题