Procurei aqui no forum, mas em alguns topicos não foram respondidos, e outros estão confusos e de anos atras.
estou com uma duvida pois quando eu seto a imagem e mando cadastrar executa os métodos de cadastro no banco, mas o método do upload
da exception de nullPointerException segue abaixo os codes.
os jars do myfaces pro tomahawk está configurado.
web.xml (não tenho certeza se está correto o xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>MyFacesExtensionsFilter</filter-name>
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
<init-param>
<param-name>uploadMaxFileSize</param-name>
<param-value>5 MB</param-value>
</init-param>
</filter>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.jsp</welcome-file>
</welcome-file-list>
</web-app>
form do cadastro.jsp
<h:form>
//aqui tem outros inputs que quando mando cadastrar eles executa! mas o upload não
<t:outputLabel value="Imagem: " for="upImgPeixe"/>
<t:inputFileUpload id="upImgPeixe" accept="jpg, bmp, png" storage="file" value="#{Peixe.imagemUpada}"/>
<t:outputText value="File Uploaded Successfully." rendered="#{Peixe.rendSuccess}" style="color:green;font-weight:bold"/>
<t:outputText value="Error in File Uploading." rendered="#{Peixe.rendFailure}" style="color:red;font-weight:bold"/>
<h:commandLink value="Cadastrar" action="#{Peixe.chamaMetodoInserir}"/>
</h:form>
método “chamaMetodoInserir” e método upload
public String chamaMetodoInserir() throws SQLException, IOException {
try {
//outros métodos dos outros inputs.
upload();
} catch (SQLException ex) {
Logger.getLogger(Peixe.class.getName()).log(Level.SEVERE, null, ex);
}
}
public String upload() throws IOException{
try {
System.out.println("1");
long size = this.imagemUpada.getSize(); // ELE Dá ERRO AQUI e vai pro CATCH :s
System.out.println("size da imagem é :"+ size );
InputStream stream = this.imagemUpada.getInputStream();
System.out.println("2");
byte [] buffer = new byte[(int)size];
stream.read(buffer, 0, (int)size);
stream.close();
this.rendSuccess=true;
this.rendFailure=false;
System.out.println("File Upload Successful.");
return "ok";
}
catch (Exception ioe) {
System.out.println("File Upload Unsuccessful. "+ioe);
this.rendSuccess=false;
this.rendFailure=true;
return "no";
}
}
Erro:
INFO: 1
INFO: File Upload Unsuccessful. java.lang.NullPointerException