JSF 2.0、Primefaces 3.4.2、Spring3.1.2を使用しています。
私はこのリンクの人の同様の問題に直面しています:h:commandButtonは2回目のクリックから機能します。
彼のように、私はajaxを使用していませんが、ボタンタグの内側<p:commandButton>
を使用しています。<p:fileDownload />
「list.xhtml」と「downloadView.xhtml」の2つのビューがあります。以下myBean.java
のコードに示すように、ビュー「list.xhtml」から「downloadView.xhtml」をリクエスト属性として表示するためにDataModelを送信します。
FacesUtil.getServletContext().setAttribute("myDataModelFromRequest", this.myDataModel);
Beanには@Scope("view")
ビュー「downloadView.xhtml」で、リクエストから送信されたDataModelをdataTableに正常に入力しました。しかし、ボタンをクリックしてファイルをダウンロードすると、問題が発生します。2回目の試行でのみ機能します。メソッドの戻り値をnullから「downloadView」に変更しようとしましたが、問題は解決しませんでした。
デバッグモードでは、2回目のクリックで「downloadMethod()」にのみ入力することに気付きました。
誰かがそれを解決するアイデアを持っていますか?
myBean.java
public String viewListMethod() {
//some work here...
FacesUtil.getServletContext().setAttribute("myDataModelFromRequest", this.myDataModel);
return "downloadView";
}
downloadView.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>