Richfaces FIle Upload +WebBeans +Jboss AS 5.1 = no go?
meetoblivion Jun 1, 2009 1:52 PMThis one's irking me. I've gotten examples like this working before in seam, not sure why it's not working w/ just webbeans.
I have a facelet defined like this:
<ui:composition template="template.xhtml">
<ui:define name="pageTitle">Webstore Image Uploader</ui:define>
<ui:define name="pageHeader">Image Uploader</ui:define>
<ui:define name="body">
<h:form>
<h:outputText value="Currently logged in as: #{login.name}" /><br />
<h:selectBooleanCheckbox value="#{uploader.override}" />Override Existing Files<br />
<rich:dataList var="result" value="#{uploader.messages}" id="status">
<h:outputText value="#{result}" />
</rich:dataList>
<rich:fileUpload acceptedTypes="tif" allowFlash="true" maxFilesQuantity="100"
fileUploadListener="#{uploader.onUpload}">
<a4j:support event="onuploadcomplete" reRender="status" />
</rich:fileUpload>
</h:form>
</ui:define>
</ui:composition>
And a bean defined like this:
@Named("uploader") @SessionScoped
public class FileUploadListener implements java.io.Serializable{
//@Current ImageDAO imageDAO;
@Current LoginBean login;
private static final Logger logger = Logger.getLogger(FileUploadListener.class);
private List<String> messages = new ArrayList<String>();
private boolean override = true;
public List<String> getMessages() {
if(messages.size() == 0){
messages.add("Welcome message.");
}
return messages;
}
public void setMessages(List<String> messages) {
this.messages = messages;
}
public boolean isOverride() {
return override;
}
public void setOverride(boolean override) {
this.override = override;
}
public void onUpload(UploadEvent e) {
logger.error("Calling on upload: "+e.getUploadItems().size());
messages = new ArrayList<String>();
//List<UploadItem> items = e.getUploadItems();
//for(UploadItem item : items) onItem(item);
onItem(e.getUploadItem());
if(messages.isEmpty()) {
if(logger.isDebugEnabled())
logger.debug("No errors during upload.");
messages.add("All files uploaded successfully");
}
}
private void onItem(UploadItem item) {
File src = item.getFile();
String fileName = item.getFileName();
int size = item.getFileSize();
//boolean existsFile = PathUtils.fileExists(fileName);
boolean existsDB = false;
boolean exists = PathUtils.fileExists(fileName) && existsDB;
if(!exists || (exists && isOverride())) {
File img = PathUtils.locateFile(fileName);
try {
img.createNewFile();
} catch (IOException e) {
logger.error("Problem creating new image: "+fileName,e);
}
src.renameTo(img);
} else {
messages.add("Overrides disabled and image found: "+fileName);
}
}
It looks like the rich file upload is never invoking my upload listener. The web beans bootstrapper is loaded fine.