inputText not Updating in Backing Bean
amattas Jun 19, 2008 4:03 PMI'm trying to upload a file and pull data in from a description field when the listener processes the request. Here is the applicable code, however the description always ends up being null in the database.
<h:form enctype="multipart/form-data" id="upload">
<h:panelGrid columns="2">
<h:outputText value="Description: " id="description" />
<h:inputText value="#{OrderView.uploadDescription}" id="uploadDescription" immediate="true" >
<a4j:support event="onkeyup" reRender="upload" />
</h:inputText>
</h:panelGrid>
<rich:fileUpload id="upload"
immediateUpload="true" fileUploadListener="#{OrderView.addUpload}"
disabled="#{fn:length(OrderView.uploadDescription) lt 10}">
</rich:fileUpload>
<span id="submitbutton"><h:commandButton value="Done"
action="success" styleClass="button" /> </span>
</h:form>
public void addUpload(UploadEvent event) {
if (event == null) { _logger.warning("null upload event"); }
UploadItem uploadItem = event.getUploadItem();
FileInputStream inputStream;
FileOutputStream outputStream;
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
String username = externalContext.getUserPrincipal().getName();
String filename = Long.toString(new Date().getTime());
String extension = fileExtension(uploadItem.getFileName());
String uploadLocation = this.getUploadParent() + '/' + this.getUploadSuffix() + '/';
File outputDir = new File(uploadLocation);
if (!outputDir.exists()) outputDir.mkdirs();
try {
System.out.println(uploadLocation + filename + extension);
outputStream = new FileOutputStream(uploadLocation + filename + extension);
if (uploadItem.isFile()) {
inputStream = new FileInputStream(uploadItem.getFile());
outputStream.getChannel().transferFrom(inputStream.getChannel(), 0, inputStream.getChannel().size());
inputStream.close();
} else
outputStream.write(uploadItem.getData());
outputStream.close();
setters.addFile(this.getId(), filename+extension, this.getUploadDescription(), username);
} catch (FileNotFoundException e) {
_logger.severe("input file not found");
} catch (IOException e) {
_logger.severe("can't write output file");
} catch (UnknownUserException e) {
_logger.severe("upload user does not exist");
} catch (UnknownOrderException e) {
_logger.info("upload order does not exist");
}
}