我无法在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";
}
答案 0 :(得分:0)
这是一个太复杂的配置,无法快速扫描 - 但我相信问题是你已经配置了Vaadin Servlet以获取对上下文根的所有请求(servlet映射到/*)。
Vaadin只会从VAADIN /子目录下面提供静态资源(即便如此,它比这更复杂 - 您需要将图像放在与您的Vaadin应用程序正在使用的主题相关的目录中)。
我注意到,有人已经想过这个,因为他们已经为/ static /创建了一个映射到默认的servlet。
如果您将图像添加到Web应用程序根目录的“static”子目录中,然后将模板中的引用更改为${app_ctx}/static/CAM00127.jpg
,那么您应该没问题。