Galera, estou com um probleminha aqui.
Tenho que gravar uma imagem no banco de dados através de um formulário jspx.
Não estou conseguindo salvar a imagem, quando clico no botão “Cadastrar” me retorna o seguinte erro:
java.lang.NullPointerException
at Java.Texto.cadastra(Texto.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.faces.application.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:387)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
at com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
at com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Minha classe java está da seguinte forma:
public class Texto {
private String texto;
public UploadedFile imagem;
public UploadedFile getImagem() {
return this.imagem;
}
public void setImagem(UploadedFile imagem) {
this.imagem = imagem;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
public String cadastra() {
try {
Connection con = Conexao.getConnection();
System.out.println("\n\nConteúdo: \n\n" + getTexto() + "\n\n");
InputStream fis = getImagem().getInputStream();
PreparedStatement prepStmt = con.prepareStatement("insert into TBTexto (Texto, Imagem) values (?, ?)");
prepStmt.setString(1, getTexto());
prepStmt.setBinaryStream(2, fis, fis.available());
System.out.println("cadastrou");
prepStmt.execute();
prepStmt.close();
con.close();
return "sucesso";
} catch (Exception e) {
e.printStackTrace();
return "erro";
}
}
}
E Minha página jspx assim:
<ice:form>
<table border="1">
<tr>
<td>
<ice:outputText value="Teste"/>
</td>
<td>
<ice:inputText value="#{Texto.texto}"/>
</td>
</tr>
<tr>
<td colspan="2">
<t:inputFileUpload rendered="true" storage="file" accept="/tmp/*" immediate="true" value="#{Texto.imagem}"/>
</td>
</tr>
<tr>
<td colspan="2">
<ice:commandButton action="#{Texto.cadastra}" value="Teste"/>
</td>
</tr>
</table>
</ice:form>
Pessoal, poderiam me dar uma luz?
Desde já agradeço