我正在学习JSF 2.0,我在课堂上有一个ImageIcon
。我可以向JSF页面显示此ImageIcon
吗?
答案 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的applet或webstart (JNLP)应用程序,该应用程序将图像显示为ImageIcon
,最后通过HTML <applet>
或{{1}嵌入它网页中的元素。但这显然很笨拙。
答案 1 :(得分:2)
如果没有将其呈现给服务器端的图像,我会说applet是将ImageIcon
放入网页的唯一方法。