如何从 Javascript 中最好地使用 JSF2 资源
在 JSF2 中使用资源是一件很棒的事情,因为您可以将资源存储在某个位置,然后使用 HTML 或 JSF2 中的不同替代方法来引用它们。我在 XHTML 页面中使用这样的资源:
<h:graphicImage value="#{resource['image:sort_up.png']}"/>
或者当我创建自己的 taglib 时使用来自 Java 的资源:
ResourceHandler resHandler = context.getApplication().getResourceHandler();
Resource minus = resHandler.createResource(IMAGES_TOGGLE_MINUS_PNG,"image");
writer.startElement("img", toComponent);
writer.writeAttribute("src", minus.getRequestPath(), "src");
HTML 中的翻译路径看起来像这样:
/nbfrontend/jsf2frontend/javax.faces.resource/sort_up.png.xhtml?ln=image
问题是:如何从 JavaScript 引用这些图像?
一种方法是创建一个隐藏元素,在其中存储路径,然后使用 getElementByID 检索隐藏元素并从那里检索值。但当应用程序中使用大量图像时,这不能很好地扩展。
另一种解决方法是将图像的路径传递给 JavaScript 函数,但这对于不直接调用的 JavaScript 函数来说是不可行的。
是否有其他替代方法可以在 JavaScript 中使用此类 JSF2 资源?
Using resources in JSF2 is a great thing because you can store the resource at some location and then reference them using different alternatives in HTML or in JSF2. I use the resources like this in XHTML pages:
<h:graphicImage value="#{resource['image:sort_up.png']}"/>
or I use the resources from Java when I create my own taglib:
ResourceHandler resHandler = context.getApplication().getResourceHandler();
Resource minus = resHandler.createResource(IMAGES_TOGGLE_MINUS_PNG,"image");
writer.startElement("img", toComponent);
writer.writeAttribute("src", minus.getRequestPath(), "src");
The translated path in the HTML then looks something like this:
/nbfrontend/jsf2frontend/javax.faces.resource/sort_up.png.xhtml?ln=image
The question is: How do I reference those images from JavaScript?
One way would be to create a hidden element where I would store the path, and then use getElementByID to retrieve the hidden element and retrieve the value from there. But this does not scale well when a lot of images are used in the application.
Another workaround would be to pass the path to the images to the JavaScript functions, but this is not feasible for JavaScript functions that are not called directly.
Is there any other alternative to use such JSF2 resources in JavaScript?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将其用作 CSS 背景图像,而不是通过
提供。与这个 JS(jQuery 风格)结合
Use it as CSS background image instead which you serve by
<h:outputStylesheet>
.in combination with this JS (jQuery flavored)