这是我的 xhtml 页面的片段。
<p:dataTable var="doc" value="#{orderCreationBackingBean.documentList}" reflow="true" style="width:70%;margin-top:5px;margin-top:5px;">
<p:column headerText="Document Name">
<h:outputText value="#{doc.documentName}"/>
<p:outputLabel value=" *" rendered="#{doc.docType == 'M' ? true : false}" style="color:red;"/>
</p:column>
<p:column style="width:20%;">
<p:fileUpload fileUploadListener="#{orderCreationBackingBean.handleFileUpload}" mode="advanced" skinSimple="true" sizeLimit="100000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/" update="tabView:idformexprocess" auto="true" uploadLabel="Upload"
onstart="submitCollection([{name:'docCode', value:'#{doc.documentCode}'},{name:'docName', value:'#{doc.documentName}'}])"/>
<p:remoteCommand name="submitCollection" process="@this" action="#{orderCreationBackingBean.setValuesForFileUpload}" partialSubmit="true"/>
</p:column>
<p:column style="width:20%;">
<p:commandButton value="View"></p:commandButton>
</p:column>
</p:dataTable>
在这里,大多数时候,onstart 在 fileuploadlistener 之后调用。
这是我调用的两种方法
public void setValuesForFileUpload() {
FacesContext context = FacesContext.getCurrentInstance();
Map<String,String> params = context.getExternalContext().getRequestParameterMap();
String doc = params.get("docCode");
docCode = new BigDecimal(doc);
docName = params.get("docName");
}
/**
* Upload Document in Dynamic Screen
*/
public void handleFileUpload(FileUploadEvent event) {
File obj = null;
InputStream inputStream = null;
if(event != null){
UploadedFile uploadFile = event.getFile();
try {
inputStream = event.getFile().getInputstream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(uploadFile.getFileName());
documentService.uploadTaskDocuments(username, avaOrderNo, bpmOrderNo, custOrderNo, bpmTaskNameAsID, docCode, event.getFile().getFileName(), uploadFile.getContentType(), uploadFile.getSize(), inputStream, "I", propFileReader.getApiQuery("UPLOADTASKDOCUMENTS"));
}
FacesMessage message = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
我应该怎么做才能在监听器之前调用 onstart?先感谢您。