我有一个"/ js /ajax-error.js“文件,我将以"richfaces方式”服务,如下所示:"/js/ajax-error.js.jsf",以便在js文件中使用那种jsf变量:"#{facesContext.externalContext.requestContextPath}".
这有可能吗?我尝试用xhtml作为js文件的前缀:它不起作用。
我使用richfaces +jsf2.0+Servlet3.0
有人能帮忙吗?
(补充)难道没有一个干净的JSF方法来达到预期的效果吗?
发布于 2011-08-27 14:34:41
如果您的唯一目的是为它提供“Richfaces”(实际上是JSF2.0方式),那么使用<h:outputScript>。将文件放入公共its内容的/resources/js/ajax-error.js中(主路径/resources是强制性的,其名称不能更改)。然后按以下方式引用:
<h:outputScript name="js/ajax-error.js" />不管它在模板中的位置如何,它都将生成到HTMLFacesServlet中,如下所示,假设您的FacesServlet映射在*.jsf上
<script type="text/javascript" src="/contextname/javax.faces.resource/js/ajax-error.js.jsf"></script>但这并不能为你提供支持!您将无法在该脚本中使用#{}。只有在<h:outputStylesheet>包含的样式表中才支持#{},以便以JSF2.0 #{resource['logo.png']}的方式定位背景图像,但仅此而已。
在您的特定情况下,我更愿意在HTML标记或全局JS变量或HTMLdata属性中引用#{facesContext.externalContext.requestContextPath} (或其较短、更受欢迎的#{request.contextPath})。如果设置为<base>,所有相对链接都将相对于它,也在JS中。
另请参阅:
h:outputStylesheet示例)发布于 2011-08-27 14:25:31
这是有可能的,但我强烈建议你不要。保持你的JavaScript干净和可缓存。
用于安排服务器端数据可供JavaScript使用的一种常见模式是将值放到HTML适当部分的" data -“属性中。例如,可以将“全局”信息(例如,有关用户会话的内容,如用户名、公司名称等)附加到<body>
<body data-username='John Phillip Sousa' data-registered='05 Jul 1903'>现在,JavaScript可以通过从<body>标记中获取数据属性来查找用户名和注册日期。编辑如下:
var body = document.getElementsByTagName('body')[0];
var username = body.getAttribute("data-username");
var registrationDate = body.getAttribute("data-registered");https://stackoverflow.com/questions/7215115
复制相似问题