Jsf 2 如何在页面源中输出文件内容(从DB)?

Jsf 2 如何在页面源中输出文件内容(从DB)?,jsf-2,spring-webflow,Jsf 2,Spring Webflow,我正在开发SpringWebFlow/JSFWeb应用程序。我需要开发管理面板,管理员可以上传一些文件和建立页面内容使用这些文件作为片段。我希望我描述得很好。为此,我创建了具有如下映射的SpringMVC控制器。它从数据库图像.xhtml输出文件。如何使用该控制器在源页面上包含文件 @RequestMapping("/file") public void getFileContent(@RequestParam("id") Integer id, HttpServletResponse resp

我正在开发SpringWebFlow/JSFWeb应用程序。我需要开发管理面板,管理员可以上传一些文件和建立页面内容使用这些文件作为片段。我希望我描述得很好。为此,我创建了具有如下映射的SpringMVC控制器。它从数据库图像.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" />

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

最好的选择是使用自定义Facelets,它检查传入路径,将文件存储在临时存储器中并返回其URL,或者只是用HTML替换,因为您似乎希望使用Spring来实现这一点

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

ResourceResolver中是否有缓存?我创建了自定义ResourceResolver,它从DB获取文件,保存在/WEB-INF/files中,并返回该文件的url。但是我注意到这个问题只解决了一次。数据库中的更改对视图没有影响-不再调用resolveUrl方法。我的自定义ResourceResolver: