我目前有2个命令按钮和一个列表框。根据列表框的选择,生成的结果可以显示在可下载的文件中或呈现为HTML表。该getFile()
代码基于BalusC的PDF
Handling教程
,而getTable()
set resultTable
。
<h:form>
<fieldset>
<h:selectManyListbox id="listbox" value="#{form.items}">
<f:selectItems value="#{form.allItems}">
</h:selectManyListbox>
</fieldset>
<h:commandButton value="Get File" action="#{form.getFile}">
<h:commandButton value="Get Table" action="#{form.getTable}">
<f:ajax render="result_table" execute="listbox" />
</h:commandButton>
<h:panelGrid id="result_table">
<table>
<thead></thead>
<tbody>
<ui:repeat var="table" value="#{form.resultTable}">
</ui:repeat>
</tbody>
</table>
</h:panelGrid>
到目前为止,两个按钮都可以正常工作。但是,我想将两个动作组合为一个按钮。当我用一个可以触发两个动作的按钮进行测试时,什么也没发生(没有文件另存为对话框或表)。这是因为一个动作是ajax还是另一个动作以ajax结尾facesContext.responseComplete();
?
<h:commandButton value="Get Both" action="#{form.getBoth}">
<f:ajax render="result_table" execute="listbox" />
</h:commandButton>
getBoth() {
getTable();
getFile();
}
另外,我想要一个复选框,如果选中该复选框,则会弹出另存为对话框并呈现表格。如果未选中,则仅呈现表。
不幸的是,HTTP无法实现。每个请求只能发送回一个响应。您不能将包含PDF文件和ajax响应的响应合并为一个响应。由于这是HTTP限制,因此JSF不能为您做任何事情。另外,根本不可能使用Ajax下载文件,因为由于安全限制,JavaScript不能强制浏览器弹出“
另存为” 对话框,也不能对本地磁盘文件系统进行任何访问。
一种解决方法是单击一次第二个请求返回的位置时,在一次单击按钮上触发 两个 HTTP请求,以使另一个请求Content-Disposition: attachment
的响应保持不变。您可以通过onclick
在命令按钮上添加一个来实现。
<h:commandButton onclick="window.location='/context/pdfservlet/filename.pdf'">
并创建一个大致类似于此FileServlet示例的PDF
servlet
。如您所见,由此不可能调用JSF操作。您必须将PDF下载方法重构为可完成方法HttpServlet
工作的类doGet()
。对于JSF托管bean和servlet之间的任何必要通信,您可以使用会话范围或通过请求路径或参数传递所需的信息(只是PDF文件标识符?)。
问题内容: 我目前有2个命令按钮和一个列表框。根据列表框的选择,生成的结果可以显示在可下载的文件中或呈现为HTML表。该代码基于BalusC的PDF处理教程,而set 。 到目前为止,两个按钮都可以正常工作。但是,我想将两个动作组合为一个按钮。当我使用触发两个动作的按钮进行测试时,什么也没发生(没有文件另存为对话框或表)。这是因为一个动作是ajax还是另一个动作以ajax结尾? 另外,我想要一个复
问题内容: 错误的代码是: 我想做的是,当我单击时,我想刷新这两个图表。但是现在我使用了两个标签,其中第二个不起作用。 那么如何使用Ajax渲染两个图表呢? 问题答案: 您可以使用单个渲染多个组件。只需确保要更新的所有单个组件都有一个。在您的示例中,它将类似于: 这些ID仅需用空格分隔,而不能用逗号分隔(仅适用于)。
问题内容: 是否可以使用goroutine并行下载和保存文件? 以下是我的代码,可从我的保管箱下载文件: 当我在命令前给download_file函数添加前缀时,它不起作用。 问题答案: 那是因为您的主要goroutine正在退出。您需要添加一个WaitGroup以等待所有goroutines退出。例如,
本文向大家介绍golang并发下载多个文件的方法,包括了golang并发下载多个文件的方法的使用技巧和注意事项,需要的朋友参考一下 背景说明 假设有一个分布式文件系统,现需要从该系统中并发下载一部分文件到本地机器。 已知该文件系统的部分节点ip, 以及需要下载的文件fileID列表,并能通过这些信息来拼接下载地址。 其中节点ip列表保存在xx_node.txt, 要下载的fileID保存在xx_f
问题内容: 如何使用php将多个文件下载为zip文件? 问题答案: 您可以使用该类创建一个ZIP文件并将其流式传输到客户端。就像是: 并流式传输: 第二行强制浏览器向用户显示一个下载框,并提示名称filename.zip。第三行是可选的,但某些(主要是较旧的)浏览器在某些情况下会出现问题,而未指定内容大小。
问题内容: 我有一个生成PDF的动作类。该适当地设定。 我 通过Ajax调用来称呼它。我不知道将流传输到浏览器的方法。我尝试了几件事,但没有任何效果。 上面给出了错误: 您的浏览器发送了该服务器无法理解的请求。 问题答案: 您不必为此使用Ajax。只是一个环节是不够的,如果你设置到服务器端代码。这样,如果您最关心的是父页面将保持打开状态(为什么您会为此而不必要地选择Ajax?)。此外,没有办法很好