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

时间:2013-08-26 07:59:18

标签: java image vaadin

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

login.ftl:http://pastebin.com/N1VX30Zr 1

servlet-context.xml:http://pastebin.com/1SFSwmJT 1

web.xml:http://pastebin.com/NtZD5zSY 1

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";
}

1 个答案:

答案 0 :(得分:0)

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

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

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

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