无法在FTL模板中显示图像(Java、FreeMaker、Vaadin)

无法在FTL模板中显示图像(Java、FreeMaker、Vaadin),java,image,vaadin,Java,Image,Vaadin,我无法在FTL模板(FreeMaker工具)中显示图像。图像正在从web内容加载,但我无法从应用程序资源加载。在我的应用程序中,我使用了Vaadin、Spring Framework和FreeMaker。如何解决这个问题?谢谢你的回复 login.ftl: servlet-context.xml: web.xml: LoginController.java: package pl.controlprocess.flota.web; import com.vaadin.server.ThemeR

我无法在FTL模板(FreeMaker工具)中显示图像。图像正在从web内容加载,但我无法从应用程序资源加载。在我的应用程序中,我使用了Vaadin、Spring Framework和FreeMaker。如何解决这个问题?谢谢你的回复

login.ftl:

servlet-context.xml:

web.xml:

LoginController.java:

package pl.controlprocess.flota.web;

import com.vaadin.server.ThemeResource;
import java.io.Serializable;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/")
public class LoginController implements Serializable {

private static final long serialVersionUID = 1L;

@RequestMapping(value = "/", method = RequestMethod.GET)
public String login(HttpServletRequest request, @RequestParam(value = "error", defaultValue = "false", required = false)Boolean isError, ModelMap model)
{       
    if (isError)
    {
        model.put("isError", isError);
    }

    model.put("app_ctx", request.getContextPath());

    return "login";
}

这是一个太复杂的配置,无法快速扫描,但我相信问题在于您已经配置了Vaadin Servlet,以拾取到上下文根的所有请求(Servlet映射到/*)

Vaadin只提供Vaadin/子目录下的静态资源(即使如此,它也比这更复杂-您需要将图像放在与您的Vaadin应用程序正在使用的主题相关的目录中)

不过我注意到,有人已经想到了这一点,因为他们已经为/static/创建了到默认servlet的映射


如果将图像添加到webapplication根目录的“static”子目录,然后将模板中的引用更改为
${app_ctx}/static/CAM00127.jpg
,您应该没事。

查看从FTL生成的输出,并打印值app_ctx.app_ctx:/cpauto和从FTL生成的输出:查看您是否可以访问/cpauto/CAM00127.jpg。把这个放在你当前url的末尾。是的,我把这个图像放在这个文件夹中,但当我在浏览器中运行应用程序时,它(图像)不会出现。当我在web浏览器()中向地址栏插入完整地址时,浏览器会将我重定向到上下文,而不显示此图像。此css代码显示图像:背景:url('),但当我放置应用程序资源路径时,此代码不显示图像: