我<t:inputFileUpload>
用于在我的应用程序中上传文件。所选文件(表示为UploadedFile
对象)仅在表单提交时保存到其绑定(支持 bean 中的成员)。当我在 UI 中使用动态元素时,表单将在不提交的情况下重新呈现。在这种情况下,值绑定是无效的,用户必须使用重新选择文件<t:inputFileUpload>
。
当然,这不是很人性化。即使没有提交,也会<t:inputFileUpload>
抛出一个ValueChangedEvent
,我想向它注册一个事件处理程序,它将新值(即上传的文件)复制到值绑定(即支持 bean 的成员)中。因为我想允许上传多个文件,所以我有一个UploadedFile
对象数组作为值绑定,在 JSF 中引用如下:
<ui:repeat value="#{bean.myFiles}" var="file">
<t:inputFileUpload
value = "#{file}"
storage = "file" />
</ui:repeat>
现在我想做这样的事情:
UploadedFile[] myFiles;
public void valueChangedHandler(ValueChangedEvent ev) {
UploadedFile file = (UploadedFile)ev.getNewValue();
UIComponent comp = ev.getComponent();
// This line is pseudocode - getValueBinding() is not available
UploadedFile bindingFile = (UploadedFile)comp.getValueBinding();
// Assigning the new value to the binding
bindingFile = file;
}
这样的事情可能吗?我还不明白如何调用ValueBinding getValueBinding(String)
它来让它像我想要的那样发生。