我正在使用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但它不起作用。
有可能吗?
答案 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往往是无情的。