我正在学习 JSF 2.0,我在类里面有一个 ImageIcon
。我可以将此 ImageIcon
显示到 JSF 页面吗?
最佳答案
存在一些重大的概念误解。
Java/JSF 在网络服务器上运行并生成 HTML。 HTML 在网络浏览器上运行,可以通过 <link>
中的(相对)URL 引用 CSS/JS/图像文件, <script>
和 <img>
元素。 ImageIcon
是 Swing 的一部分,与这一切无关。
Swing 根本不生成任何 HTML。当您仍然尝试在由 HTTP 请求调用的 Java 类(例如 JSF 支持 bean 类甚至“普通”servlet 类)中以“Swing 方式”运行它时,它只会显示在屏幕上它连接到运行网络服务器的物理机器,而不是运行网络浏览器的物理机器(这正是运行 HTML 的地方)。
最终,您需要通过正常的 HTML 方式显示图标。也就是说,使用 <img>
元素,或者可能在带有 CSS background-image
的 block 元素上属性(property)。无论哪种方式,他们都必须指向一个返回图像的有效 URL(也就是说,当最终用户在浏览器的地址栏中准确输入该 URL 时,它应该会看到完整的图像)。通常,这是通过将图像文件放在公共(public)网络内容中来实现的(您还可以在其中存储您的 JSF (XHTML/JSP) 页面。
在 JSF 中,您可以生成一个 HTML <img>
元素使用 <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>
或 <object>
网页中的元素。但这很笨拙。
关于java - 将 ImageIcon 从类显示到 JSF 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14249383/