我正在使用 JSF 2.0、Primefaces 3.4.2、Spring 3.1.2。
我面临这个链接的人的类似问题:h:commandButton 从第二次单击开始工作。
像他一样,我没有在中使用 ajax,<p:commandButton>
但我<p:fileDownload />
在按钮标签内使用。
我有两个视图:“list.xhtml”和“downloadView.xhtml”。在myBean.java
我从视图“list.xhtml”发送一个 DataModel 以查看“downloadView.xhtml”作为请求属性,如下面的代码所示:
FacesUtil.getServletContext().setAttribute("myDataModelFromRequest", this.myDataModel);
豆子是用@Scope("view")
在视图“downloadView.xhtml”中,我成功填充了一个数据表,其中包含从请求发送的 DataModel。但是当我单击按钮下载文件时,就会出现问题。它仅在第二次尝试时有效。我已经尝试将我的方法的返回从 null 更改为“downloadView”,但问题没有解决。
在调试模式下,我注意到仅在第二次单击时输入“downloadMethod()”。
任何人都有解决它的想法?
myBean.java
public String viewListMethod() {
//some work here...
FacesUtil.getServletContext().setAttribute("myDataModelFromRequest", this.myDataModel);
return "downloadView";
}
下载View.xhtml
<h:form id="formId" prependId="false">
<p:dataTable
id="dataTableId" var="myVar" value="#{myDataModelFromRequest}"
selection="#{cargaProcessoControlador.myArray}"
paginator="true" rows="10" paginatorPosition="bottom" paginatorAlwaysVisible="false">
<f:facet name="header">
bla bla bla
</f:facet>
<p:column selectionMode="multiple" style="width:18px" />
//collumns here...
</p:dataTable>
<p:commandButton id="btDownload" ajax="false" value="Download" icon="ui-icon-document" >
<p:fileDownload value="#{myBean.downloadMethod()}" />
</p:commandButton>
</h:form>