Primefaces 6:使用模式简单的 fileUpload 组件禁用按钮上传
Primefaces 6: disable button Upload with fileUpload component with mode simple
我正在使用 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 组件中的 Choose 按钮时,我可以为此按钮设置 disable=false
吗?我尝试使用 javascript 但它不起作用。
可能吗?
不幸的是,这是不可能的,我尝试并发现 fileUpload 是 "non-ClientBehaviorHolder parent"(又名。不 p:ajax )。
第二个选项是使用生成的输入类型="file" ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file ) 的 java 脚本事件之一,但是素面不会暴露...
这意味着 jsf - prime faces 的方式,至少在简单模式下,是让按钮始终启用并验证表单提交时的文件选择。
虽然如果你真的 want/need 启用文件选择按钮,你可以使用 jquery 将事件侦听器附加到将启用按钮的输入类型="file",但是这个选项有点 hack,所以我不推荐它,因为当你乱搞它们预期的组件行为时,prime-faces 和 jsf 往往是无情的。
我正在使用 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 组件中的 Choose 按钮时,我可以为此按钮设置 disable=false
吗?我尝试使用 javascript 但它不起作用。
可能吗?
不幸的是,这是不可能的,我尝试并发现 fileUpload 是 "non-ClientBehaviorHolder parent"(又名。不 p:ajax )。
第二个选项是使用生成的输入类型="file" ( https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file ) 的 java 脚本事件之一,但是素面不会暴露...
这意味着 jsf - prime faces 的方式,至少在简单模式下,是让按钮始终启用并验证表单提交时的文件选择。
虽然如果你真的 want/need 启用文件选择按钮,你可以使用 jquery 将事件侦听器附加到将启用按钮的输入类型="file",但是这个选项有点 hack,所以我不推荐它,因为当你乱搞它们预期的组件行为时,prime-faces 和 jsf 往往是无情的。