- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在尝试禁用按钮,直到操作完成,然后这应该启用按钮
按钮代码:
<p:commandButton action="#{navigationBean.naviagtion}" value="Next" disabled="#{!fileUploadController.uploadComplete}"/>
这是 bean FileUploadController,它是一个托管和 View 范围的 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}"/>
它使按钮在启动时处于 Activity 状态,但是当我上传文件并单击按钮时,它会刷新页面然后变为禁用,这与我想要发生的事情完全相反哈哈,那么如何才能取消此操作?我试过交换 true 和 false 语句,但这没有用,这从来没有使按钮禁用
我怎样才能翻转控件,使它做与现在相反的事情
最佳答案
在 our latest conversation 之后我看了一下 official documentation .
我发现,就像 Sujoy 评论的那样,p:fileOupload
有一个属性 update
,在上传完成后呈现一个组件。所以你更新你的Nav
通过添加 update="Nav"
给你的<p:fileUpload>
.这样你的按钮应该正确地重新呈现。
也许你应该切换 disabled="#{fileUploadController.uploadComplete}"/>
返回disabled="#{!fileUploadController.uploadComplete}"/>
因为如果uploadComplete == true
,该按钮应该不被禁用。
您必须将更新放在上传组件中,而不是按钮本身!
希望您的测试没有弄乱您的代码;)
关于java - p :commandbutton doing the opposite of what i require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923937/
我是一名优秀的程序员,十分优秀!