Boa madrugada galera, estou fazendo um cadastro simples com apenas o código e nome. E tenho uma dataTable com varios registros(inseridos direto do banco). Como eu posso fazer, para quando eu selecionar um desses registros e clicar em editar, abrir o diolog(que esta no mesmo xhtml) e exibir o nome em um inputText.
Irei postar o xhtml(Todo e depois por partes) e o Bean.
xhtml
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<script type="text/javascript" src="Script.js"></script>
<h:form id="frmGERSRPAI">
<p:dialog header="Países cadastrados" widgetVar="dlgGERSRPAI" width="570" height="400" minimizable="true" closable="false"
resizable="false">
<p:commandLink onclick="#{beanGERSRPAI.novo()}" oncomplete="dlgGERPRPAI.show()" update="display">
<p:graphicImage value="/imagens/novo.png" style="border: none;"/>
</p:commandLink>
<p:commandLink oncomplete="dlgGERPRPAI.show()" update="display">
<p:graphicImage value="/imagens/editar.png" style="border: none;"/>
</p:commandLink>
<p:commandLink onclick="exclusao.show()">
<p:graphicImage value="/imagens/excluir.png" style="border: none;"/>
</p:commandLink>
<p:commandLink onclick="dlgGERSRPAI.hide()" update="GERTBPAI">
<p:graphicImage value="/imagens/fechar.png" style="border: none;"/>
</p:commandLink>
<br/><br/>
<p:dataTable id="GERTBPAI" var="GRLTBPAI" value="#{beanGERSRPAI.listaGERTBPAI}" rowKey="#{GRLTBPAI.gerNomePai}"
selection="#{beanGERSRPAI.GRLTBPAI}" selectionMode="single" emptyMessage="Não há país cadastrado"
paginator="true" rows="8" paginatorPosition="top"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}">
<f:facet name="header" />
<p:column headerText="Código" style="width: 80px" sortBy="#{GRLTBPAI.gerPkCodPai}" filterBy="#{GRLTBPAI.gerPkCodPai}" filterMaxLength="3"
filterStyle="width: 80px">
<h:outputText value="#{GRLTBPAI.gerPkCodPai}" />
</p:column>
<p:column headerText="Nome" style="width: 400px" sortBy="#{GRLTBPAI.gerNomePai}" filterBy="#{GRLTBPAI.gerNomePai}" filterStyle="width: 400px">
<h:outputText value="#{GRLTBPAI.gerNomePai}" />
</p:column>
</p:dataTable>
</p:dialog>
<p:dialog header="Virtualizze" widgetVar="exclusao" resizable="false" closable="false" modal="true">
<center>
<h:outputText value="Deseja excluir o registro ?" /> <br/> <br/>
<p:commandButton value="Não" onclick="exclusao.hide()" update="GERTBPAI"/>
</center>
</p:dialog>
<p:dialog header="Cadastrar país" widgetVar="dlgGERPRPAI" width="500" height="130" minimizable="true" closable="false"
resizable="false" modal="false">
<h:panelGrid id="display" columns="1">
<h:outputText value="Nome"/>
<p:inputText value="#{beanGERSRPAI.GRLTBPAI.gerNomePai}" style="width: 450px"/>
</h:panelGrid> <br/>
<center>
<p:commandButton value="Salvar" action="#{beanGERSRPAI.salvar()}" oncomplete="dlgGERPRPAI.hide()" update="GERTBPAI"/>
<p:commandButton value="Cancelar" onclick="dlgGERPRPAI.hide()"/>
</center>
</p:dialog>
</h:form>
</html>
Bean
package controller;
import entidades.Gertbpai;
import hibernate.HibernateUtil;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.hibernate.Session;
@ManagedBean
@RequestScoped
public class BeanGERSRPAI {
private List<Gertbpai> listaGERTBPAI;
private Gertbpai GRLTBPAI;
public Gertbpai getGRLTBPAI() {
return GRLTBPAI;
}
public void setGRLTBPAI(Gertbpai GRLTBPAI) {
this.GRLTBPAI = GRLTBPAI;
}
public List<Gertbpai> getListaGERTBPAI() {
return listaGERTBPAI;
}
public BeanGERSRPAI() {
GRLTBPAI = new Gertbpai();
listaGERTBPAI = new ArrayList<Gertbpai>();
carregarLista();
}
public void carregarLista() {
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
listaGERTBPAI = session.createQuery("FROM Gertbpai").list();
session.getTransaction().commit();
} catch(Exception ex) {
System.out.println(ex.toString());
}
}
public void novo() {
GRLTBPAI = new Gertbpai();
}
public void salvar() {
try {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(getGRLTBPAI());
session.getTransaction().commit();
} catch(Exception ex) {
System.out.println(ex.toString());
}
}
}
A parte do DataTable
<p:dataTable id="GERTBPAI" var="GRLTBPAI" value="#{beanGERSRPAI.listaGERTBPAI}" rowKey="#{GRLTBPAI.gerNomePai}"
selection="#{beanGERSRPAI.GRLTBPAI}" selectionMode="single" emptyMessage="Não há país cadastrado"
paginator="true" rows="8" paginatorPosition="top"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}">
<f:facet name="header" />
<p:column headerText="Código" style="width: 80px" sortBy="#{GRLTBPAI.gerPkCodPai}" filterBy="#{GRLTBPAI.gerPkCodPai}" filterMaxLength="3"
filterStyle="width: 80px">
<h:outputText value="#{GRLTBPAI.gerPkCodPai}" />
</p:column>
<p:column headerText="Nome" style="width: 400px" sortBy="#{GRLTBPAI.gerNomePai}" filterBy="#{GRLTBPAI.gerNomePai}" filterStyle="width: 400px">
<h:outputText value="#{GRLTBPAI.gerNomePai}" />
</p:column>
</p:dataTable>
o dialog
<p:dialog header="Cadastrar país" widgetVar="dlgGERPRPAI" width="500" height="130" minimizable="true" closable="false"
resizable="false" modal="false">
<h:panelGrid id="display" columns="1">
<h:outputText value="Nome"/>
<p:inputText value="#{beanGERSRPAI.GRLTBPAI.gerNomePai}" style="width: 450px"/>
</h:panelGrid> <br/>
<center>
<p:commandButton value="Salvar" action="#{beanGERSRPAI.salvar()}" oncomplete="dlgGERPRPAI.hide()" update="GERTBPAI"/>
<p:commandButton value="Cancelar" onclick="dlgGERPRPAI.hide()"/>
</center>
</p:dialog>
o Commandlink do editar
<p:commandLink onclick="dlgGERPRPAI.show()" update="display">
<p:graphicImage value="/imagens/editar.png" style="border: none;"/>
</p:commandLink>
Desde já, obrigado.
Observação: Como podem perceber o DataTable ja seleciona uma linha quando clica