我正在学习 JSF 2.0 并且我有ImageIcon
一个班级。我可以把这个展示ImageIcon
给 JSF 页面吗?
2 回答
存在一些重大的概念性误解。
Java/JSF 在网络服务器上运行并生成 HTML。HTML 在 webbrowser 上运行,可以通过<link>
,<script>
和<img>
元素中的(相对)URL 引用 CSS/JS/image 文件。ImageIcon
是 Swing 的一部分,与这一切无关。
Swing 根本不生成任何 HTML。当您仍然尝试在由 HTTP 请求调用的 Java 类中“以 Swing 方式”运行它时,例如 JSF 支持 bean 类甚至是“普通的”servlet 类,那么它只会显示在屏幕上它连接到运行网络服务器的物理机器,而不是运行网络浏览器的物理机器(这正是运行 HTML 的地方)。
最终,您需要通过普通的 HTML 方式显示图标。也就是说,使用<img>
元素,或者可能在具有 CSSbackground-image
属性的块元素上。无论哪种方式,他们都必须指向一个返回图像的有效 URL(也就是说,当最终用户在浏览器的地址栏中输入该 URL 时,它应该看到完整的图像)。通常,这是通过将图像文件放置在公共 Web 内容中来实现的(您还存储 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 的小程序或webstart (JNLP)应用程序,将图像显示为ImageIcon
并最终通过 HTML<applet>
或<object>
网页中的元素将其嵌入。但这很笨拙。
除了将其呈现为服务器端的图像之外,我想说小程序将是ImageIcon
进入网页的唯一另一种方法。