java - 如何使用 vaadin ClassResource 类和 Tomcat 作为 Web 服务器显示图像?

标签 java tomcat vaadin

我创建了一个 Vaadin 应用程序,尝试使用 ClassResource vaadin 类加载一些图标以及一些 vaadin 组件,但我在最终应用程序中看不到这些图标。 在图标位置我看到一个蓝色问号。 该应用程序部署在tomcat(最新版本)上。 这是部分代码。

IconsUI.java:

tf.setIcon(new ClassResource("email.png"));
cb.setIcon(new ClassResource("note.png"));
ta.setIcon(new ClassResource("document.png"));
bt.setIcon(new ClassResource("ok.png"));

这些图像文件与 IconsUI.java 类位于同一包中。

我的 web.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
           version="3.0">

    <display-name>icons</display-name>
    <context-param>
        <description>
            Vaadin production mode</description>
        <param-name>productionMode</param-name>
        <param-value>false</param-value>
    </context-param>
    <servlet>
        <servlet-name>Icons Application</servlet-name>
        <servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
        <init-param>
            <description>
                Vaadin UI class to use</description>
            <param-name>UI</param-name>
            <param-value>MavenVaadinIcons.IconsUI</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Icons Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

最佳答案

要使用 ClassResource 加载图像,您的图像应该在最终 Web 应用程序的类路径中可用。您可以通过将图像放置在 Maven 源的 src/main/resources 文件夹中来将图像添加到类路径中。

此外,您需要在图像文件名中添加前导 / 字符。您使用的 ClassResource 构造函数没有 Class 参数,因此它使用当前 UI 类作为类。您指定的资源将在与 UI 类相同的包中查找。通过添加前导 / 字符,将在类路径根目录中查找该文件。

tf.setIcon(new ClassResource("/email.png"));
cb.setIcon(new ClassResource("/note.png"));
ta.setIcon(new ClassResource("/document.png"));
bt.setIcon(new ClassResource("/ok.png"));

关于java - 如何使用 vaadin ClassResource 类和 Tomcat 作为 Web 服务器显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826177/

相关文章:

java - 使用 CXF 在 Web 服务请求上添加 header

java - 为什么 request.getRemoteUser() 有时会返回 tomcat Windows 服务帐户

java - Vaadin 中的嵌入推文

session - 获取 Vaadin Flow 中当前的 VaadinContext 和当前 VaadinSession(这两个位置都将状态存储为 "attribute"键值对)

java - 无法通过 Selenium 和 WebDriver 定位元素

java - Spring Oauth 异常消息中的国际化

java - 如何使用Java从特定服务器访问数据库?

java - 在 web.xml 中不使用 resource-ref 连接到数据源

java - Tomcat 关闭 websocket 连接并出现错误

java - 用于 Vaadin/Apache Cayenne 应用程序的 Tomcat 部署的 "velocity.log"的位置在哪里?