在客户端获得csv响应

时间:2014-10-22 17:22:10

标签: jsf csv

我正在尝试从JSF托管bean中检索csv文件。

现在我这样做,

CsvController: Bean以内容类型text / csv响应输出。

samplecsv.xhtml:包含以下代码的网页:

#{csvController.generateReport()}

当我在浏览器上浏览此页面时,会打开一个下载对话框,可以下载csv文件。

report.xhtml:

下载csv的网页:

d3.csv('http://mysite/samplecsv.xhtml');

有没有办法摆脱samplecsv.xhtml并直接从report.xhtml中的bean中检索csv文件? 像d3.csv('http://mysite/csvController/report')之类的东西 会是完美的

1 个答案:

答案 0 :(得分:1)

您所询问的模式并不是JSF工作方式的原生模式。见JSF 2: invoking managed bean directly

如果您仍想直接从托管bean下载内容,以下是如何执行此操作的示例。无论如何,report.xhtml中的下载链接的网址应该使用<f:commandLink action="#csvController.download()}" /> {j}一些jsf组件生成。请参阅How to provide a file download from a JSF backing bean?

我推荐的方法是创建一个新的@WebServlet("/csvController")或JAX-RS @Path("/csvController")前端,并从此处调用您的业务逻辑。要从servlet访问托管bean,您可以这样做:Possible to inject @ManagedBean as a @ManagedProperty into @WebServlet?

无论如何,我建议你看看: Backing beans (@ManagedBean) or CDI Beans (@Named)? Are @ManagedBeans obsolete in JavaEE6 because of @Named in CDI/Weld?