Pet*_*šek 4 javascript jsf jscolor
我想将JScolor包含到我的jsf应用程序中.它可以通过<script>标签,但我的意思是它更多的系统通过<h:outputScript>.
但是它没有使用资源.JSColor包含一个js文件和一些图片文件 - 它似乎包含了js文件,而不是reousrces.
谁能告诉我为什么?以及如何解决这个问题?
谢谢.
Bal*_*usC 12
JS文件显然是通过相对路径引用图片文件,该路径不代表有效的JSF资源URL.
将<h:outputScript>生成经过这些担心在其他自动定位和版本的JSF资源处理程序JSF资源URL.它会生成一个带有前缀的URL,/javax.faces.resource并附加当前使用的FacesServletURL映射,例如*.xhtml或/faces/*.
因此,如果你将faces servlet映射到*.xhtml并且有一个/resources/jscolor包含JS和图像文件的文件夹,并且已经引用了JS文件,如下所示,
<h:outputScript name="jscolor/jscolor.js" />
Run Code Online (Sandbox Code Playgroud)
然后它会产生
<script type="text/javascript" src="/context/javax.faces.resource/jscolor/jscolor.js.xhtml"></script>
Run Code Online (Sandbox Code Playgroud)
但是,图像文件在/javax.faces.resource/jscolor文件夹中不是物理可用的,而是在文件夹中实际可用/resources/jscolor.该/javax.faces.resource会只有当你申请的资源名称的面孔servlet映射可以自动解决.因此,如果你手工编辑这个特定的情况下,只会工作jscolor.js,从如改变图像文件名的文件arrow.gif来arrow.gif.xhtml.
如果您没有使用JSF资源解析器的任何自动本地化或版本控制功能,也没有使用任何需要真正的JSF资源而不是静态HTML元素的特殊自定义资源解析器,例如这个,那么您也可以继续简单的vanilla HTML <script>元素而不是<h:outputScript>.
<script type="text/javascript" src="#{request.contextPath}/resources/jscolor/jscolor.js"></script>
Run Code Online (Sandbox Code Playgroud)