Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload Jsf2 Richfaces 4文件上载,显示业务逻辑错误_File Upload_Jsf 2_Richfaces - Fatal编程技术网

File upload Jsf2 Richfaces 4文件上载,显示业务逻辑错误

File upload Jsf2 Richfaces 4文件上载,显示业务逻辑错误,file-upload,jsf-2,richfaces,File Upload,Jsf 2,Richfaces,我使用jsf2和RichFaces4实现了一个文件上传。它工作得很好,只犯了一个小错误 当我上传文件时,可能会发现我收到来自业务逻辑的异常。e、 g.文件已处理 如何管理它以显示此异常?我试图注册我的上传完成并呈现的形式,但没有成功 我的Fileupload bean我试图在faces ontext上设置捕获的异常,但运气不好:-/: public void uploadSvg(FileUploadEvent event) { UploadedFile uploadedFile = ev

我使用jsf2和RichFaces4实现了一个文件上传。它工作得很好,只犯了一个小错误

当我上传文件时,可能会发现我收到来自业务逻辑的异常。e、 g.文件已处理

如何管理它以显示此异常?我试图注册我的上传完成并呈现的形式,但没有成功

我的Fileupload bean我试图在faces ontext上设置捕获的异常,但运气不好:-/:

public void uploadSvg(FileUploadEvent event) {
    UploadedFile uploadedFile = event.getUploadedFile();
    File file = writeFileToDisk(uploadedFile);
    try {
        Utils.getSpringBean(FigureService.class).importFigure(
            file.getAbsolutePath());
    } catch (Exception e) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                file.getName() + " -> " + e.getMessage(), null);
        FacesContext.getCurrentInstance().addMessage(null, message);
        log.error(e,e);
        // TODO display messages
    }
}
我的页面我使用它进行两次不同的文件上传。希望你不介意:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<body>
    <h:form id="files" >
        <h:messages errorStyle="color:red" warnStyle="color: yellow" />

        <h:panelGrid columns="1">
            <h:column>
                <c:if test="#{fileType eq 'svg'}">
                    <rich:fileUpload fileUploadListener="#{fileUpload.uploadSvg}"
                        maxFilesQuantity="5" id="uploadsvg" immediateUpload="false"
                        acceptedTypes="svg" allowFlash="false"
                        uploadData="#{fileUpload.uploadedFiles }" autoclear="false">
                        <a4j:ajax event="uploadcomplete" execute="@none" render="files"/>
                    </rich:fileUpload>
                </c:if>
                <c:if test="#{fileType eq 'fm'}">
                    <rich:fileUpload fileUploadListener="#{fileUpload.uploadFm}"
                        maxFilesQuantity="5" id="uploadfm" immediateUpload="false" 
                        acceptedTypes="csv" allowFlash="false"
                        uploadData="#{fileUpload.uploadedFiles }" autoclear="false">
                        <a4j:ajax event="uploadcomplete" execute="@none" render="files"/>
                    </rich:fileUpload>
                </c:if>
            </h:column>
        </h:panelGrid>
    </h:form>
</body>
</html>
非常感谢! 问候语,
m

如何验证是否触发了uploadcomplete事件?我想这可能就是问题所在。我忘记了我的bean是可视范围的。当我尝试展示时,刷新工作正常。如果将showcase会话范围设置为viewscope,则在完成事件后也不会刷新。