Значение недоступно вне списка изменений значения входного файла во время загрузки файла в Oracle ADF

Я создаю форму в Oracle ADF, в которой я использую входной файл для загрузки файла в БД. Когда я выбираю файл через входной файл, значение получено в ValueChangeListener, но если я попытаюсь получить доступ к этому значению вне функции ValueChangeListener через общедоступные переменные или функции getter, setter, полученное значение равно null.

// Value Change Listener for inputFileComponent
    public void onFileUploadVCL(ValueChangeEvent valueChangeEvent) {
        file=(UploadedFile)valueChangeEvent.getNewValue();
        // get the file name
        uploadedFileName=file.getFilename();
        // get the mime type
        contentType = file.getContentType();
        // get blob
        blob=getBlob(file);      
    }

  //submit function where i need to use values

   public void onSubmit(ActionEvent actionEvent) {
        // Add event code here...
        System.out.println("String:"+inEmpCode+"#"+outDesignation+"#"+inFromDate+"#"+inToDate+"#"+uploadedFileName+"$$"+blob);
        insertRow(inEmpCode,inFromDate,inToDate,uploadedFileName,blob);               
    }

// Код из его представления

                            <af:selectOneChoice value="#{AddReviewBean.inEmpCode}"
                                                label="#{bindings.Empcode.label}"
                                                required="#{bindings.Empcode.hints.mandatory}"
                                                shortDesc="#{bindings.Empcode.hints.tooltip}" id="soc1"
                                                valueChangeListener="#{AddReviewBean.onSelectionChange}" autoSubmit="true">
                                <f:selectItems value="#{bindings.Empcode.items}" id="si1"/>
                                <f:validator binding="#{bindings.Empcode.validator}"/>
                            </af:selectOneChoice>

                            <p xmlns="http://www.w3.org/1999/xhtml">
                <af:inputText value="#{AddReviewBean.outDesignation}" readOnly="true" label="Designation" id="txtDesignation"
                              partialTriggers="soc1"/>
            </p>
             <p xmlns="http://www.w3.org/1999/xhtml">
                <af:inputDate label="From" id="dateTxtFrom" required="true" value="#{AddReviewBean.inFromDate}"/>
            </p>
            <p xmlns="http://www.w3.org/1999/xhtml">
                <af:inputDate label="To" id="dateTxtTo" required="true" value="#{AddReviewBean.inToDate}"/>
            </p>

            <p xmlns="http://www.w3.org/1999/xhtml">
            <af:inputFile label="Upload Review" maximumFiles="1" autoSubmit="true" id="inFileReview"
                          valueChangeListener="#{AddReviewBean.onFileUploadVCL}" value="#{AddReviewBean.file}"/>
            </p>
            <p xmlns="http://www.w3.org/1999/xhtml">

                <af:button partialSubmit="true" text="Submit" id="btnSubmit"
                           actionListener="#{AddReviewBean.onSubmit}"/>
            </p>

        </af:panelFormLayout>

person CThakur    schedule 27.10.2017    source источник
comment
Можете ли вы добавить код формы к вашему вопросу?   -  person Cedric    schedule 27.10.2017
comment
@MrAdibou готово!   -  person CThakur    schedule 30.10.2017


Ответы (2)


Объявите свои переменные как статические, и это должно работать.

person Himanshu    schedule 30.10.2017
comment
Спасибо, это сработало !!.. Я объявлял переменные общедоступными, и они становились нулевыми, как только они выходили из ValueChangeListener. - person CThakur; 30.10.2017
comment
Это определенно плохая идея, установка статического значения означает, что следующий пользователь, обращающийся к этой странице, будет иметь переменные данные из загруженного файла другого пользователя!!! - person Amr Gawish; 14.11.2017

Переменная останется там, если вы объявили свой управляемый компонент внутри pageFlowScope или sessionScope (если вы считаете, что он должен выжить в течение всего сеанса пользователя) и сделать переменную частной (не статической).

person Amr Gawish    schedule 14.11.2017