在 Oracle ADF 中上传文件期间,无法在 Inputfile 的 valuechangelistener 外部访问值
Value not accessible outside valuechangelistener of Inputfile during fileupload in Oracle ADF
我正在 Oracle ADF 中创建一个表单,我在其中使用输入文件将文件上传到数据库。当我 select 通过输入文件值接收文件时,在 ValueChangeListener 中收到但如果我尝试通过 public 变量或 getter 、 setter 函数访问 valuchangelistener 函数之外的值收到的值为空。
// 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>
将您的变量声明为静态变量,它应该可以工作。
如果您在 pageFlowScope 或 sessionScope 中声明托管 bean(如果您认为它应该在整个用户会话中存活)并将变量设为私有(非静态),则该变量将保留在那里。
我正在 Oracle ADF 中创建一个表单,我在其中使用输入文件将文件上传到数据库。当我 select 通过输入文件值接收文件时,在 ValueChangeListener 中收到但如果我尝试通过 public 变量或 getter 、 setter 函数访问 valuchangelistener 函数之外的值收到的值为空。
// 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>
将您的变量声明为静态变量,它应该可以工作。
如果您在 pageFlowScope 或 sessionScope 中声明托管 bean(如果您认为它应该在整个用户会话中存活)并将变量设为私有(非静态),则该变量将保留在那里。