我正在使用(Java Server Faces 2.2)Primefaces 3.2 简单文件上传控制器。我需要在上传之前访问文件信息。选择文件时我可以使用什么侦听器以及如何ManagedBean
在开始上传之前获取文件信息
问问题
4724 次
1 回答
2
该标签不支持任何 ajax 行为事件,因此您唯一能做的就是在上传开始之前调用一个方法,使用上传开始时触发的“onstart”属性。使用远程命令,您可以执行以下操作:
<p:remoteCommand name="beforeUpdate" partialSubmit="true" process="@this"
actionListener="#{myBean.doBefore}" value="" />
将远程命令调用添加到文件上传
<p:fileUpload fileUploadListener="#{itemImportDialogController.uploadListener}"
mode="advanced" multiple="true" onstart="beforeUpdate()"
styleClass="importItems" update=":itemImportView:fileForm" style="margin: 10px 0"/>
并在bean中添加这样的方法
public void doBefore() {
//DO SOME WORK
}
关于文件名,您只能在文件上传时检索它
public void uploadListener(FileUploadEvent event) {
UploadedFile file = event.getFile();
//DO SOMETHING
}
因为在此之前,组件和服务器之间没有可能的 ajax 交互。所以我很抱歉,但这是不可能的。
顺便说一句,您可以尝试通过 jQuery 捕捉事件来管理它,例如
$('input[type=file]').change(function() {
//GET THE FILE AND SUBMIT IT TO THE SERVER WITH AJAX CALL
});
于 2012-12-12T09:22:51.010 回答