Boa noite @Mike. já mexi e continua sem exibir a imagem.
Não envie a estrutura da árvore de pastas pois quero ler uma pasta fora do contexto da aplicação: C:\imgPaciente\vinicius\koala.jpg, por exemplo.
No banco eu salvo o caminho:C:\imgPaciente\vinicius\koala.jpg
retorna List da minha entidade.
public List<ImagemPaciente> atualizaListaImagem() {
imagensPaciente = new ArrayList<ImagemPaciente>();
FacesContext context = FacesContext.getCurrentInstance();
Application application = context.getApplication();
PacienteControlador pacienteControlador = application.evaluateExpressionGet(context, "#{pacienteControlador}",
PacienteControlador.class);
if ((pacienteControlador.getPaciente().getId() != null)) {
Paciente pacienteSelecionado = pacienteServico
.recuperaPacienteID(pacienteControlador.getPaciente().getId());
String subPasta = pacienteSelecionado.getId() + "-" + pacienteSelecionado.getNome();
File diretorio = new File("c:\\imgPacientes\\" + subPasta + "\\");
if (!diretorio.exists()) {
diretorio.mkdirs();
}
imagensPaciente = imagemServico.listaImagensPorPaciente(pacienteSelecionado.getId());
}
return imagensPaciente;
}
como estou tentando chamar o p:galleria
dentro de um p:tabview
chamo esse evento ao clicar no tab que deveria listar as imagens e retornar a minha lista.
public void onTabChangeImagens(TabChangeEvent event) {
TabView tabView = (TabView) event.getComponent();
int activeTabIndex = tabView.getActiveIndex();
if (activeTabIndex == 1) {
atualizaListaImagem();
}
}
Aqui deveria retornar a imagem…
public StreamedContent getMostraFotoLocal2(String descricao) {
FacesContext context = FacesContext.getCurrentInstance();
DefaultStreamedContent content = null;
System.out.println("CICLO DE VIDA DO JSF "+context.getCurrentPhaseId());
for (ImagemPaciente anexo : imagensPaciente) {
System.out.println("Verificando diretorio " + anexo.getDiretorioImagem());
File caminho = new File(descricao);
try {
System.out.println("Caminho no render "+caminho);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(caminho));
byte[] bytes = new byte[in.available()];
in.read(bytes);
in.close();
content = new DefaultStreamedContent(new ByteArrayInputStream(bytes), "image/jpeg");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
return content;
}
Essa descrição seria: C:\imgPaciente\vinicius\koala.jpg
Na minha página:
<p:tab id="tabListaImagem" title="Lista Imagens">
<h:form id="formListaImagem">
<p:galleria value="#{imagemPacienteControlador.atualizaListaImagem()}" var="imagem" panelHeight="200" panelWidth="300">
<p:graphicImage value="#{imagemPacienteControlador.getMostraFotoLocal2(imagem.diretorioImagem)}" cache="false">
</p:graphicImage>
</p:galleria>
</h:form>
Só que agora ao pesquisar e selecionar o paciente dá o seguinte erro:
CICLO DE VIDA DO JSF RENDER_RESPONSE 6
Verificando diretorio c:\imgPacientes\vinicius\Koala.jpg
vou pegar o contetn c:\imgPacientes\vinicius\Koala.jpg
Caminho no render c:\imgPacientes\vinicius\Koala.jpg
Verificando diretorio c:\imgPacientes\vinicius\Penguins.jpg
vou pegar o contetn c:\imgPacientes\vinicius\Penguins.jpg
Caminho no render c:\imgPacientes\vinicius\Koala.jpg
fev 28, 2019 7:24:55 PM com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback visit
GRAVE: java.io.IOException: javax.el.PropertyNotFoundException: /paginas/paciente/cadastraPaciente.xhtml @4959,139 value="#{imagemPacienteControlador.getMostraFotoLocal2(imagem.diretorioImagem)}": Property [getMostraFotoLocal2] not found on type [br.com.f2v.gestorOdontologico.controladores.ImagemPacienteControlador]
fev 28, 2019 7:24:55 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/paginas/paciente/cadastraPaciente.xhtml]
javax.faces.FacesException: java.io.IOException: javax.el.PropertyNotFoundException: /paginas/paciente/cadastraPaciente.xhtml @4959,139 value="#{imagemPacienteControlador.getMostraFotoLocal2(imagem.diretorioImagem)}": Property [getMostraFotoLocal2] not found on type [br.com.f2v.gestorOdontologico.controladores.ImagemPacienteControlador]
Tentei f:param
passando a descrição e veio null
Como listo ao clicar na aba sempre retorna Render_Response
Se puder ajudar fico grato. Já estou com dor de cabeça rsrsrsrs