Criar método dentro do DAO, estou usando direito o List?
10 respostas
A
andredecotia
A dúvida é: listaImagens está recebendo de fato os registros vindos do banco de dados? Estou acessando da forma correta tais registros através get(index)?
Vide:
/**
* Método que traduz a URL de acesso a imagem
* */
public String verImagem(){
if ((pessoaImagem != null) && (pessoaImagem.getPessoaInfoId() != null)) {
List<byte[]> listaImagens = new ArrayList<byte[]>();
listaImagens = pessoaImagemDAO.recuperarPorId(pessoaImagem.getPessoaInfoId());
int limite = pessoaImagemDAO.recuperarPorId(pessoaImagem.getPessoaInfo().getIdPessoa()).size();
for (int i = 0; i < limite; i++){
System.out.println(listaImagens.isEmpty());
inputStream = new ByteArrayInputStream(listaImagens.get(i));
}
}
return SUCCESS;
}
A dúvida é: listaImagens está recebendo de fato os registros vindos do banco de dados? Estou acessando da forma correta tais registros através get(index)?
Vide:
/**
* Método que traduz a URL de acesso a imagem
* */
public String verImagem(){
if ((pessoaImagem != null) && (pessoaImagem.getPessoaInfoId() != null)) {
List<byte[]> listaImagens = new ArrayList<byte[]>();
listaImagens = pessoaImagemDAO.recuperarPorId(pessoaImagem.getPessoaInfoId());
int limite = pessoaImagemDAO.recuperarPorId(pessoaImagem.getPessoaInfo().getIdPessoa()).size();
for (int i = 0; i < limite; i++){
System.out.println(listaImagens.isEmpty());
inputStream = new ByteArrayInputStream(listaImagens.get(i));
}
}
return SUCCESS;
}
Recebo a lista assim:
inputStream = new ByteArrayInputStream(listaImagens.get(i));
Pelo índice e exatamente nesta linha que está dando NullPointerException…
Aliás estou fazendo uma coisa que nunca fiz, digo, estou tentando acessar o Bean que é PessoaImagem (Foto do autor do livro) seu atributo (referência pra um outro objeto
que a PessoaInfo que é o autor do livro) a partir dele acessar o atributo dele que é o id (idPessoa)… Isso está certo? Pois não está funcionando…
A
andredecotia
Puxa Webskate, confesso q pensei q funcionaria mas continua o NullPointerm, veja:
29/10/2010 16:42:51 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at java.io.ByteArrayInputStream.<init>(Unknown Source)
at br.com.nomeDoProjeto.GaleriaImagemAction.verImagem(GaleriaImagemAction.java:84)
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 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:399)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:262)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:213)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:161)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:507)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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(Unknown Source)
W
webskate
acho que o problema não está no for, posta o resto do código principalmente o código da linha que está dando o erro no stacktrace, e o seu código ficaria
Conseguí chegar a uma solução, todavia não está populando todas as fotos de um autor, popula apenas uma foto, o que será? Vide o código atualizadinho:
/** * Método que pega o retorno no formato JSON * */publicStringgetJSON()throwsException{returnmostraURLDeAcessoDaImagemRelacionadaAPessoa();}/** * Método que mostra a URL de acesso da imagem relacionada a pessoa * */privateStringmostraURLDeAcessoDaImagemRelacionadaAPessoa()throwsException{pessoaImagem.setUrl(concatenaURLRecuperaImagem(idPessoa));String[]arrayDeURL=newString[1];arrayDeURL[0]=pessoaImagem.getUrl();JsonConfigjsonConfig=newJsonConfig();jsonConfig.setJsonPropertyFilter(newPropertyFilter(){publicbooleanapply(Objectsource,Stringname,Objectvalue){returnsourceinstanceofPessoaImagem&&name.equals("pessoaInfo");}});JSONjson=JSONSerializer.toJSON(arrayDeURL,jsonConfig);Map<String,Object>modelMap=newHashMap<String,Object>();modelMap.put("total",1);modelMap.put("linhas",json);setReturnJSON(JSONSerializer.toJSON(modelMap));returnSUCCESS;}/** * Método que deixa dinâmica a busca pelas fotos do autor * */privateStringconcatenaURLRecuperaImagem(intidPessoa){Stringurl="/nomeDoProjeto/verImagemPeloId!verImagem.action?pessoaInfo.idPessoa="+idPessoa;returnurl;}
Olá galera,
um amigo disse que devo por num array de bytes, ótima idéia... Só que não estou conseguindo:
/** * Método que traduz a URL de acesso na imagem * */publicStringverImagem(){if((pessoaImagem!=null)&&(pessoaInfo.getIdPessoa()!=null)){List<byte[]>listaImagens=pessoaImagemDAO.pegaImagensDoAutorPorId(pessoaInfo.getIdPessoa());InputStream[]arrayDeInputStreams=newInputStream[50];for(byte[]bytesDaImagens:listaImagens){inputStream=newByteArrayInputStream(bytesDaImagens);inti=0;while(i<arrayDeInputStreams.length){arrayDeInputStreams[i]=inputStream;++i;}//testefor(intj=0;j<arrayDeInputStreams.length;j++){System.out.println(arrayDeInputStreams[j]);}}}returnSUCCESS;}
A
andredecotia
Bom, já estou conseguindo alocar tudo num array de InputStream, a questão é que na hora de exibir a foto na tela não está conseguindo, veja:
/**
* Método que traduz a URL de acesso na imagem
* */
public String verImagem(){
if ((pessoaImagem != null) && (pessoaInfo.getIdPessoa() != null)) {
List<byte[]> listaImagens = pessoaImagemDAO.pegaImagensDoAutorPorId(pessoaInfo.getIdPessoa());
int quantidadeDeRegistrosDaBaseDeDados = pessoaImagemDAO.pegaImagensDoAutorPorId(pessoaInfo.getIdPessoa()).size();
for (int i = 0; i < quantidadeDeRegistrosDaBaseDeDados; i++){
inputStream = new ByteArrayInputStream(listaImagens.get(i));
arrayDeInputStreams[i] = inputStream;
}
}
return SUCCESS;
}