繁体   English   中英

在Vaadin项目中访问src / main / webapp / images中的图像

[英]Access images in src/main/webapp/images in Vaadin project

在我的Vaadin项目中,我希望能够直接将图像作为静态资源进行访问。 当我将图像放在src / main / webapp / VAADIN / themes / ...下面时,它可以工作。 如果图像位于src / main / webapp / images中,我该怎么做? 到目前为止,我已经看到可以将这个servlet映射放入我的web.xml中:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/images/*</url-pattern>
</servlet-mapping>

不幸的是,它不起作用,我收到此错误:

Caused by: com.ibm.ws.exception.RuntimeWarning: SRVE0303E: Servlet name for the servlet mapping /images/* could not be found.

我的应用程序在WebSphere上运行,因此我也尝试使用SimpleFileServlet作为servlet-name:

<servlet-mapping>
    <servlet-name>SimpleFileServlet</servlet-name>
    <url-pattern>/images/*</url-pattern>
</servlet-mapping>

仍然会导致与上述相同的错误。

任何帮助表示赞赏!


更新

其他servlet映射:

<servlet-mapping>
    <servlet-name>QuarzServlet</servlet-name>
    <url-pattern>/QuarzServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>RunJUnitServlet</servlet-name>
    <url-pattern>/RunJUnitServlet</url-pattern>
</servlet-mapping>

尝试通过URL打开Web浏览器中的图像(位于src / main / webapp / images /中)时,它仅加载Vaadin应用程序。 当我打开使用图像的页面时,Firebug告诉我找不到图像。

从您的更新来看,似乎Vaadin servlet被映射到/ *(或使用向静态文件发出请求的url-pattern映射到Vaadin servlet)。 由于Vaadin Servlet的映射与请求URI匹配,因此Websphere将为Vaadin Servlet提供服务,而后者可能会尝试提供静态文件。 该请求将永远不会通过Websphere文件服务机制。 您可以验证您的Vaadin servlet,以查看是否具有如下所示的注释:

@WebServlet(value = "/*")

如果是这种情况,并且您仍然希望Websphere提供静态文件,则将需要修改此映射以使其更加具体,并使对静态文件的请求通过Websphere文件提供机制进行。 您可以在此处找到有关如何设置Vaadin Servlet的其他信息:

https://vaadin.com/wiki/-/wiki/Main/Creating+a+servlet+3.0+application

此外,此stackoverflow问题还提供了一些可能的解决方案:

如何通过Vaadin / Spring应用程序提供静态资源?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM