我一直在尝试禁用按钮,直到操作完成,然后这应该启用按钮
按钮的代码:
<p:commandButton action="#{navigationBean.naviagtion}" value="Next" disabled="#{!fileUploadController.uploadComplete}"/>
这是 bean FileUploadController 它是一个托管和视图范围的 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}"/>
它使按钮在启动时生效,但是当我上传文件并单击按钮时,它会刷新页面然后变为禁用状态,这与我想要发生的事情完全相反,哈哈,那么这个动作怎么能被尊重?我曾尝试交换正确和错误的陈述,但这没有用,这从未使按钮禁用
我怎样才能翻转控件,使其与现在做的相反