Primefaces 6:禁用按钮使用fileUpload组件上传,模式简单

时间:2018-01-25 09:48:09

标签: jsf file-upload primefaces jsf-2

我正在使用Primefaces 6,我创建了一个fileUpload组件,如下所示:

                <p:fileUpload id="myId" 
                          styleClass="MY-STYLE" 
                          value="#{bean.objUploadedFile}" 
                          mode="simple" 
                          skinSimple="true" 
                          multiple="false"
                          update="@form"
                          label="Choose"
            >
            </p:fileUpload>

我必须使用mode=simple所以ajax是假的。我添加一个按钮来管理上传:

                <p:commandButton id="btnId" 
                             value="Upload" 
                             disabled="#{myBean.btnDisabled}"
                             process="@form"
                             update="@form"
                             ajax="false"
                             actionListener="#{myBean.manageUpload}" 
            />

此按钮加载disable=true以启动。 当用户单击fileUpload组件中的“选择”按钮时,是否可以为此按钮设置disable=false?我试过javascript但它不起作用。 有可能吗?

1 个答案:

答案 0 :(得分:0)

不幸的是,这是不可能的,我试过并发现fileUpload是一个“非ClientBehaviorHolder父”(又名。没有p:ajax)。

第二个选项是使用生成的输入类型=“文件”(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file)的一个java脚本事件,但是主面不会暴露...

这意味着jsf - prime面向方式,至少在简单模式下,是让按钮始终启用并验证表单提交时的文件选择。

虽然如果你真的想要/需要在文件选择上启用按钮,你可以使用jquery将事件监听器附加到将启用按钮的input type =“file”,但是这个选项有点像黑客,所以我不要推荐它,因为当你弄乱他们预期的组件行为时,prime-faces和jsf往往是无情的。