Ao clicar no comandButonn esta sendo carregado o ultimo vídeo da lista no dialog, porem no datatable funciona corretamente quando exibo pelo componente media. Quero facilitar para o usuário da seguinte forma quando o usuário clicar no botão abrir o dialog, e exibir o vídeo do registro X dentro do dialog, clicar no segundo botão abrir o vídeo Y. Acho que é coisa simples, porem não estou conseguindo configurar. Estou achando estranho, porque, só mostra o ultimo vídeo (Parece que não esta atualizando om painel no comandButonn tento update=":mensagem :formListagem:tabela formVideo:painelVideo"). Segue alguns trechos do código:
Datatable (Primefaces):
<p:column headerText="Vídeo">
<p:commandButton value="Assistir"
oncomplete="PF('video').show();"
actionListener="#{logicaAlgoritmoBean.selecionarVideo}"
update=":mensagem :formListagem:tabela formVideo:painelVideo" >
<f:attribute name="videoSelecionado" value="#{logicaAlgoritmo}" />
</p:commandButton>
<p:dialog header="Vídeo Aula" widgetVar="video"
position="top"
draggable="true" resizable="true" modal="true">
<h:form id="formVideo">
<h:panelGrid id="painelVideo">
<p:outputLabel id="nomeCurso" maxlength="600" size="40"
value="#{logicaAlgoritmoBean.logicaAlgoritmo.curso.nomeCurso}" />
<p:outputLabel id="descricao" maxlength="600" size="40"
value="#{logicaAlgoritmoBean.logicaAlgoritmo.descricao}" />
<p:media cache="false" id="videos"
value="http://localhost:8080/logica/#{logicaAlgoritmo.codigo}.wmv"
width="910px"
height="450px" player="windows">
<f:param name="autoPlay" value="true" />
<f:param name="autostart" value="true" />
</p:media>
</h:panelGrid>
</h:form>
</p:dialog>
/*Aqui o componente média exibe corretamente o vídeo de cada registro.*/
<p:media cache="false" id="videos" value="http://localhost:8080/logica/#{logicaAlgoritmo.codigo}.wmv" width="200"
height="150" player="windows">
<f:param name="autoPlay" value="false" />
<f:param name="autostart" value="false" />
</p:media>
</p:column>
Metodo selecionarVideo, para mostrar no console o vídeo que foi escolhido:
public void selecionarVideo(ActionEvent evento){
logicaAlgoritmo = (LogicaAlgoritmo) evento.getComponent().getAttributes().get("videoSelecionado");
System.out.println("Vídeo selecionado: "+logicaAlgoritmo);
}
Metodo para lista:
@PostConstruct
public void listar() {
try {
logicaAlgoritmoDAO logicaAlgoritmoDAO = new logicaAlgoritmoDAO();
logicaAlgoritmos = logicaAlgoritmoDAO.listar();
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar listar a vídeo aula!");
erro.printStackTrace();
Messages.addGlobalError(erro.getMessage());
}
}