如何在页面源中输出文件内容(来自DB)?

时间:2011-06-15 16:37:17

标签: jsf-2 spring-webflow

我正在使用Spring WebFlow / JSF web-app。我需要开发管理面板,管理员可以使用这些文件作为片段上传一些文件并构建页面内容。我希望我描述得很好。为此,我创建了Spring MVC控制器,其映射如下所示。它从数据库输出文件(图像,.xhtml)。如何使用该控制器在页面源上包含文件?

@RequestMapping("/file")
public void getFileContent(@RequestParam("id") Integer id, HttpServletResponse response) throws IOException {
    File f = fileDAO.get(id);
    response.setContentType(f.getMime());
    IOUtils.write(f.getData(), response.getOutputStream());
}

这不起作用:

<ui:include src="#{request.contextPath}/app/file?id=6" />

1 个答案:

答案 0 :(得分:0)

JSF / Facelets包括运行服务器端,而不是客户端。 <ui:include>接受服务器端路径,而不是Web URL。 Spring侦听客户端(HTTP)请求,而不是像JSF那样侦听服务器端资源解析。

您最好的选择是使用自定义Facelets ResourceResolver来检查传入路径,将文件存储在临时存储中并返回其URL返回,只是为了替换HTML <ui:include> <iframe>,因为您似乎想要使用Spring。

<iframe src="#{request.contextPath}/app/file?id=6"></iframe>