rich:fileUpload: A4J is not defined using a4j:outputPanel with ajaxRendered=true
klhoste2 Apr 4, 2011 5:25 AMHello !
Still using RichFaces 3.3.3Final.
Now, I have an issue using the rich:fileUpload component in combination with a4j:outputPanel having the ajaxRendered attribute set to true.
I use the outputPanel in my application for error handling, this works fine normally. It is coded like this:
<a4j:outputPanel id="errorPanel" ajaxRendered="true"> <rich:modalPanel id="errorWindowId" showWhenRendered="#{apiException}"> <f:facet name="header"> <h:outputText value="Error" /> </f:facet> <!-- Error display ... --> </rich:modalPanel> </a4j:outputPanel>
"apiException" is an attribute set in the request used to show the modalPanel.
Then, I added a rich:fileUpload component which should display errors using the above modalPanel :
<a4j:form id="uploadForm"> <rich:fileUpload id="uploadFileInput" fileUploadListener="#{fileUpload.processUpload}" maxFilesQuantity="1"> <a4j:support event="onuploadcomplete" action="#{errorMessage.display}" onsubmit="#{rich:component('uploadFileInput')}.clear();"/> <a4j:support event="onsizerejected" action="#{fileUpload.sizeRejected}" onsubmit="#{rich:component('uploadFileInput')}.clear();"/> </rich:fileUpload> <a4j:commandButton id="uploadFormButton" title="validate" value="validate" onclick="if(#{rich:component('uploadFileInput')}.entries.length==1){#{rich:component('uploadFileInput')}.upload();}else{alert('#{upload['warning.upload.empty']}');}"> </a4j:commandButton> </a4j:form>
Both onuploadcomplete and onsizerejected events call an bean action which put the attribute "apiException" in the request.
Actually, the processUpload method does this but it seems to reRender a hidden iframe so I got the following JavaScript errors :
A4J is not defined
ModalPanel is not defined
I've also tried to use the submitForm() JS method on the a4j:commandButton onclick but the result was not as expected (see here: http://community.jboss.org/message/590067#590067)
Please could someone help me to solve this issue...
Thank you !
KL