从类到JSF页面显示ImageIcon?

时间:2013-01-10 01:24:48

标签: java swing jsp jsf imageicon

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

2 个答案:

答案 0 :(得分:3)

有一些重大的概念误解正在发生。

Java / JSF在webserver上运行并生成HTML。 HTML在webbrowser上运行,可以通过<link><script><img>元素中的(相对)URL引用CSS / JS /图像文件。 ImageIcon是Swing的一部分,与此无关。

Swing根本不会产生任何HTML。当您仍然尝试在由HTTP请求调用的Java类中运行“Swing方式”时,例如JSF支持bean类甚至是“普通的vanlet”servlet类,那么它只会显示在屏幕上它附加到运行Web服务器的物理机器上,而不是运行webbrowser的物理机器(这正是HTML运行的地方)。

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

在JSF中,您可以使用<img>组件生成HTML <h:graphicImage>元素。提供以下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>或{{1}嵌入它网页中的元素。但这显然很笨拙。

答案 1 :(得分:2)

如果没有将其呈现给服务器端的图像,我会说applet是将ImageIcon放入网页的唯一方法。