Pego a lista de url das fotos e crio vários Files, mas tá dando zica no “return”. Como posso retornar essas fotos para que sejam mostradas na JSP?
Abraço!
Guevara, sugiro você dar uma lida muito boa no Java Collections, pois notei que você não conhece nada sobre elas, e é muito importante para o desenvolvimento você ter uma noção mínima sobre elas.
Nesse caso você precisará retornar no seu método uma lista de fotos, algo como:
public List<File> mostra(Long idImovel) {
List<File> destinos= new LinkedList<File>();
List<String> fotos = fotoDAO.getFotos(idImovel);
for(String foto: fotos) {
File destino = new File(pastaImagens, foto);
destinos.add(destino);
}
return destinos; //este return
}
vc não vai conseguir mostrar as fotos usando o new File(…) pois ele retorna o caminho da foto no servidor, e isso não adianta pra mostrar na página…
se vc salvou as imagens dentro de uma pasta da sua aplicação (usou context.getRealPath, ou coisas do tipo), vc pode retornar esse caminho, e com ele vc consegue mostrar a imagem…
se vc salvou em uma pasta fora da aplicação, ou dentro da pasta WEB-INF vc vai ter que criar uma lógica pra mostrar cada imagens…
Pois é Lucas, colocando o breakpoint no result.include e no return do método getGaleria() na DAO só me dá este resultado:
Navegando pela árvore não consigo achar nada do objeto Foto. =/
@SuppressWarnings("unchecked")
public List<Foto> getFoto(Long idImovel) {
return session.createQuery("select f.urlFoto, f.nome from Foto f where f.imovel.id = :id")
.setParameter("id", idImovel).list();
}
Hibernate:
select
this_.id_imovel as y0_
from
Imovel this_
Hibernate:
select
foto0_.url_foto as col_0_0_,
foto0_.nome as col_1_0_
from
Foto foto0_
where
foto0_.imovel_id_imovel=?
Acho que agora está certo ----> foto0_.imovel_id_imovel=?
Tá dando pau na JSP:
Pois é Garcia, eu tô fazendo por analogia, se funciona em outra página têm que funcionar em outra, tenho outro método para Imóvel que funciona, e agora não. Exemplo:
Não consigo entender essas frescuras, que não sei se é por causa da consulta ou se é por causa da jstl, no primeiro caso a consulta é na tabela imóvel, o segundo caso é na tabela filha Foto. Fazer consultas nessas tabelas está sendo um parto com Criteria e Query.
Pois é, ontem eu estava lendo uns tópicos antigos e notei que você está tendo muitos problemas que eu ainda não tinha visto. Pense positivo: você é um “bugs-finder”, hahahahaha.
Brincadeiras a parte, embora eu não use os objetos como retorno dos métodos do controller posso jurar que quando você usa assim o vraptor retorna como nome-do-objeto + List (no seu caso seria fotoList). Talvez na sua outra tela você retorne via results.include, não?
E até por questão de legibilidade, quando você tem mais de uma foto é normal usar ou plural ou um sufixo List, assim você se organiza melhor e evita pequenos erros bobos.
Tô penando aqui pra resolver esses “bugs”. Eu vejo o pessoal do RubyOnRails e Python desenvolvendo coisas como essas sem problemas, enquanto no Java td é mais burocrático, embora o VRaptor dê a agilidade a própria linguagem não dá. Se tiver dois casos iguais, um vai dar certo e outro não, e nessa brincadeira o tempo vai embora e não se produz nada.
Nesse meu último post coloquei como vc sugeriu, e veja que não mostra nada na JSP, detalhe, nem erros aparecem no console, é ai que na minha opinião o desenvolvimento em Java fica no chinelo em comparação com as outras linguagens que citei.
Se existem dois casos iguais, os dois obrigatóriamente devem dar o mesmo resultado. Nos dois retorna a lista de objetos, nos dois a lista é enviada via result.include, e óbviamente vou pegar na JSP da mesma forma, mas não, um funciona e o outro não. =/
O problema é que muitas linguagens o programador pode ir na base do chutômetro, ou como eu digo, na base da tentativa e erro. No Java não é que tudo é mais complicado, só é necessário que o programador leia o mínimo que seja para aprender a usar a API. Boa parte dos erros que eu notei que você teve é por não conhecer a API. Então acho que é um pouco cedo para você dizer que Java é complicado, afinal você ainda não conhece Java o suficiente para ter uma produtividade.
Trabalho há ~13 anos com Java, e conheço muito pouco de RoR e Python, então não posso mesmo fazer uma comparação. Mas creio que, como eu te disse, quando você conhecer um pouco melhor a API vai ver como Java é bem simples.
Teus códigos me pareceram diferentes. Um deles usa o retorno no próprio método do controller, já o outro usa via results.include.
Altere esses seus forEachs para não dar conflito de variáveis conforme eu já escrevi acima e também verifique os retornos dos controllers, passe tudo via results.include. Além disso verifiquei se você está passando os tipos corretos e não há mais de uma variável com o mesmo nome.