Загрузка файла Jsf2 Richfaces 4, ошибка отображения из бизнес-логики - PullRequest
1 голос
/ 26 августа 2011

Я реализовал загрузку файлов, используя jsf2 и richfaces 4. Он работает довольно хорошо с одной маленькой ошибкой.

Когда я загружаю свой файл, может случиться так, что я получу исключение из моей бизнес-логики. (например, файл уже обработан)

Как мне управлять отображением этого исключения? Я попытался зарегистрировать меня для завершения загрузки и отрисовки формы, но безуспешно.

Мой бин Fileupload (я попытался установить перехваченное исключение для текста лиц без удачи: - /):

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>

Большое спасибо! Привет, м

...