首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过h:outputScript将javascript包含到资源中

通过h:outputScript将javascript包含到资源中
EN

Stack Overflow用户
提问于 2013-04-10 21:13:38
回答 4查看 23.3K关注 0票数 4

我想将JScolor包含到我的jsf应用程序中。它可以通过<script>标签,但我的意思是,它是更多的系统通过<h:outputScript>

然而,它并没有与资源协同工作。JSColor包含一个js文件和一些图片文件--看起来像是包含了js文件,却没有包含资源。

有人能告诉我为什么吗?如何解决这个问题呢?

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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文件,

代码语言:javascript
复制
<h:outputScript name="jscolor/jscolor.js" />

然后它会生成

代码语言:javascript
复制
<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>

代码语言:javascript
复制
<script type="text/javascript" src="#{request.contextPath}/resources/jscolor/jscolor.js"></script>
票数 12
EN

Stack Overflow用户

发布于 2013-04-10 21:31:54

我可能误解了你的问题,但这段代码将会有所帮助:

代码语言:javascript
复制
<script
    type="text/javascript"
    src="#{facesContext.externalContext.requestContextPath}/path/on/WebContent/foo.js"></script>

我经常用这种java资源包含,而不是<h:outputScript>

票数 3
EN

Stack Overflow用户

发布于 2014-06-19 14:26:21

假设您的js文件(名为jquery.js的文件)进入resources/js文件夹的路径如下:

代码语言:javascript
复制
resources/js/jquery.js

然后你必须写:

代码语言:javascript
复制
<h:outputScript name="./js/jquery.js"  target="body"/>

PS。注意属性目标(如头部、身体)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15926901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档