我有一个Richfaces组件 - fileUpload
即使服务器转换异常,它的onerror
方法也不会启动。这是组件'代码:
<rich:fileUpload
immediateUpload="true"
acceptedTypes="pdf, txt, rtf, xls, xlsx, doc, docx, ppt, pptx, jpg, jpeg, mpg, mpeg"
allowFlash="true"
maxFilesQuantity="1"
fileUploadListener="#{bean.listener}"
onerror="alert('error');"
onuploadcomplete="alert('complete');"
>
<f:attribute name="typ" value="#{cc.attrs.typ}"></f:attribute>
</rich:fileUpload>
我的bean.listener
看起来像这样:
public void listener(final FileUploadEvent event) throws IOException, ConversionException {
throw new RuntimeException("haha");
}
在任何情况下我唯一得到的是complete
消息。 RichFaces的版本为4.2.3
。
有人遇到过这样的问题吗?
感谢。
UPD。
好的,我查看了Richfaces 4文档,实际上没有onerror
事件。似乎任何结果都是框架的成功。所以现在问题是如何对来自服务器的异常做出反应?
答案 0 :(得分:1)
您可以收听uploadcomplete
。它会发送您可以检查其状态的项目,例如:
onuploadcomplete="checkItems(event)"
…
checkItems = function(event) {
var items = event.rf.data;
for (var i = 0; i < items.length; i++) {
if (items[i].state == "serverError") { // and/or "sizeExceeded"
alert('error');
}
}
}
编辑: 啊,我看到你在听众中解雇了异常。您将以此方式捕获的例外情况与将文件传输到服务器有关。在调用监听器时,组件已经传递了文件,因此状态是“完成”#34;。您必须自己处理侦听器中发生的异常。