Bom dia,
Eu estou trabalhando com o componente rich:fileUpload, porém assim que eu tento fazer o upload da imagem aparece esse erro:
Segue o erro + trechos de códigos
Erro:
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/GerenciadorCondominio] threw exception
javax.el.ELException: /pages/formCadastroCondomino.xhtml @67,107 createContent="#{fileUploadMB.paint}": java.lang.NullPointerException
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
at org.richfaces.resource.MediaOutputResource.encode(MediaOutputResource.java:62)
at org.richfaces.resource.UserResourceWrapperImpl.encode(UserResourceWrapperImpl.java:188)
at org.richfaces.resource.UserResourceWrapperImpl.getInputStream(UserResourceWrapperImpl.java:159)
at org.richfaces.resource.CachedResourceImpl.initialize(CachedResourceImpl.java:176)
at org.richfaces.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:167)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at org.richfaces.request.FileUploadMemoryResource.getSize(FileUploadMemoryResource.java:58)
at org.richfaces.request.UploadedFile25.getSize(UploadedFile25.java:84)
at org.richfaces.request.BaseUploadedFile.getData(BaseUploadedFile.java:58)
at br.com.xyz.gencon.controller.FileUploadMB.paint(FileUploadMB.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
... 22 more
xhtml
<rich:fileUpload fileUploadListener="#{fileUploadMB.listener}" id="upload" acceptedTypes="jpg, gif, png, bmp" clearLabel="limpar" addLabel="Adcionar"
uploadLabel="Upload" clearAllLabel="Apagar" immediateUpload="true"
ontyperejected="alert('Somente Arquivos com final jpg');" maxFilesQuantity="2"
styleClass="abcd" deleteLabel="Excluir" >
<a4j:ajax event="uploadcomplete" execute="@none" render="info" />
</rich:fileUpload>
<h:panelGroup id="info">
<rich:panel bodyClass="info" >
<f:facet name="header">
<h:outputLabel value="Uploaded Files Info" />
</f:facet>
<rich:dataGrid columns="1" value="#{fileUploadMB.arquivos}" var="file" rowKeyVar="row">
<rich:panel>
<h:panelGrid columns="2">
<a4j:mediaOutput element="img" mimeType="image/jpeg" createContent="#{fileUploadMB.paint}"
value="#{row}" style="width:100px; height:100px;" cacheable="true" >
<f:param value="#{fileUploadMB.timeStamp}" name="time" />
</a4j:mediaOutput>
<h:panelGrid columns="2">
<h:outputText value="tamanho: " />
<h:outputText value="#{file.name}" />
</h:panelGrid>
</h:panelGrid>
</rich:panel>
</rich:dataGrid>
</rich:panel>
</h:panelGroup>
Web.xml
<context-param>
<param-name>org.richfaces.fileUpload.createTempFiles</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.fileUpload.maxRequestSize</param-name>
<param-value>1000000</param-value>
</context-param>
MB
private ArrayList<UploadedFile25> arquivos = new ArrayList<UploadedFile25>();
public void listener(FileUploadEvent event) throws Exception {
UploadedFile25 item = (UploadedFile25) event.getUploadedFile();
this.arquivos.add(item);
}
public void paint(OutputStream stream, Object object) throws IOException {
stream.write(arquivos.get((Integer) object).getData());
stream.close();
}
Estou usando JSF 2.0
RichFaces 4.1.0
Obrigado