繁体   English   中英

从班级到JSF页面显示ImageIcon?

[英]Show ImageIcon from class to JSF page?

我正在学习JSF 2.0,并且在课堂上有一个ImageIcon 我可以显示此ImageIcon到JSF页面吗?

发生了一些重大的概念误解。

Java / JSF在Web服务器上运行并生成HTML。 HTML在网络浏览器上运行,并且可以通过<link><script><img>元素中的(相对)URL引用CSS / JS /图像文件。 ImageIcon是Swing的一部分,与这一切无关。

Swing根本不产生任何HTML。 当您仍然尝试在由HTTP请求调用的Java类(例如JSF支持bean类或什至是“普通香草” servlet类)中以“摇摆方式”运行它时,它只会显示在屏幕上它连接到运行Web服务器的物理计算机上,而不是运行在Web浏览器的物理计算机上(这正是HTML的运行位置)。

最终,您需要以常规HTML方式显示图标。 也就是说,使用<img>元素,或者使用具有CSS background-image属性的block元素。 无论哪种方式,他们都必须指向一个有效的URL,该URL返回一个图像(也就是说,当最终用户在浏览器的地址栏中输入该URL的专有名称时,它应该完整地看到该图像)。 通常,这可以通过将图像文件放置在公共Web内容中(也可以在其中存储JSF(XHTML / JSP)页面的位置)来实现。

以JSF的方式,您可以使用<h:graphicImage>组件处理HTML <img>元素。 提供了以下webcontent文件夹结构

WebContent
 |-- META-INF
 |-- WEB-INF
 |-- resources
 |    `-- images
 |         `-- icon.png
 `-- index.xhtml

以及index.xhtml的以下组件

<h:graphicImage name="images/icon.png" />

那么最终用户只需打开index.xhtml就应该能够看到所需的图像。

一种替代方法是创建一个基于Swing的appletwebstart(JNLP)应用程序,该应用程序将图像显示为ImageIcon并最终通过HTML <applet><object>元素将其嵌入网页中。 但这很笨拙。

除了将其渲染到服务器端的图像之外,我要说一个applet是将ImageIcon导入网页的唯一其他方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM