0

我无法在 FTL 模板(FreeMaker 工具)中显示图像。图片是从网页内容加载的,但我无法从应用程序资源加载它。在我的应用程序中,我使用 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

登录控制器.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";
}
4

1 回答 1

0

这是一个过于复杂的配置,无法快速扫描 - 但我认为问题在于您已将 Vaadin Servlet 配置为获取上下文根目录的所有请求(servlet 映射到 /*)。

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

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

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

于 2013-08-27T07:39:31.650 回答