アクションが完了するまでボタンを無効にしようとしていましたが、これでボタンが有効になります
ボタンのコード:
<p:commandButton action="#{navigationBean.naviagtion}" value="Next" disabled="#{!fileUploadController.uploadComplete}"/>
これはBeanFileUploadControllerであり、管理およびビュースコープのBeanです。
private boolean uploadComplete;
uploadComplete = false;
System.out.println("Upload complete value before copy file " + uploadComplete);
copyFile(event.getFile().getFileName(), event.getFile().getInputstream());
} catch (IOException e) {
//handle the exception
e.printStackTrace();
}
}
public void copyFile(String fileName, InputStream in) throws IOException {
try {
uploadComplete = true;
//does things
public boolean isUploadComplete() {
return uploadComplete;
}
public void setUploadComplete(boolean uploadComplete) {
this.uploadComplete = uploadComplete;
}
コンソールでは、uploadCompleteがfalseからtrueに変更されるたびに出力するように設定し、次のようになります。
INFO: Upload complete value before copy file false
INFO: upload complete value is : true
値がfalseからtrueに変わることがわかるように、問題はボタンが二度とアクティブにならないことです。これはなぜですか?
これは問題なく動作し、エラーなどはありません。ボタンの問題です。
編集 :
いくつかのテストの後、私はこのコードで見つけました:
<p:commandButton id="Nav" action="#{navigationBean.naviagtion}" value="Next" ajax="False" update ="Nav" disabled="#{fileUploadController.uploadComplete}"/>
起動時にボタンがライブになりますが、ファイルをアップロードしてボタンをクリックすると、ページが更新されて無効になります。これは、私がやりたいことの正反対です。どうすればこのアクションを元に戻すことができますか?真と偽のステートメントを入れ替えてみましたが、これは機能しませんでした。これにより、ボタンが無効になることはありませんでした。
コントロールを反転して、現在行っていることとは逆のことを行うにはどうすればよいですか?