Olá pessoal, estou com um dúvida:
Obter o valor com um h:selectOneRadio em um rich:Data Table.
O código abaixo apenas trata uma tabela, nela gostaria de listar uma lista de receptores (isso já acontece) após isso, no fim das linhas, na última coluna, passar através deum radioButton do JSF um registro para ser submetido após o envio de todo o formulário no atributo Receptor, dentro de Atendimento.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta>
</h:head>
<h:body>
<f:view>
<h:form>
<rich:popupPanel id="modalPanelReceptor" modal="false" width="600"
moveable="false">
<f:facet name="header">
<h:outputText value="Defina o Receptor"></h:outputText>
</f:facet>
<f:facet name="controls">
<h:outputLink value="#" style="text-decoration:none;"
onclick="#{rich:component('modalPanelReceptor')}.hide(); return false;">X</h:outputLink>
</f:facet>
<rich:dataTable value="#{atendimentoBean.listaReceptores}"
id="table" var="_receptor" style="width: 100%;" rowKeyVar="index"
noDataLabel="Não existem receptores cadastrados.">
<rich:column width="10%">
<f:facet name="header">
<h:outputText value="Nome do Receptor" />
</f:facet>
<h:outputText value="#{_receptor.nomeReceptor}"></h:outputText>
</rich:column>
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo sanguíneo do receptor" />
</f:facet>
<h:outputText value="#{_receptor.tipoSanguineo}"></h:outputText>
</rich:column>
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo Hemoderivado do receptor" />
</f:facet>
<h:outputText value="#{_receptor.tipoHemo}"></h:outputText>
</rich:column>
<rich:column width="20%">
<f:facet name="header">
<h:outputText value="selecione" />
</f:facet>
<h:selectOneRadio onchange="#{atendimentoBean.selecionar}"
value="#{atendimentoBean.atendimentoEdicao.receptor}">
<f:selectItems itemValue="1" itemLabel="" />
</h:selectOneRadio>
</rich:column>
</rich:dataTable>
</rich:popupPanel>
<br />
</h:form>
</f:view>
</h:body>
</html>
ManagedBean.
package br.com.agets.visao;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import br.com.agets.dominio.Atendimento;
import br.com.agets.dominio.Doador;
import br.com.agets.dominio.Receptor;
import br.com.agets.dominio.TipoHemoderivado;
import br.com.agets.dominio.TipoSanguineo;
import br.com.agets.negocio.AtendimentoService;
import br.com.agets.negocio.DoadorService;
import br.com.agets.negocio.ReceptorService;
import br.com.agets.negocio.RegraNegocioException;
@ManagedBean(name = "atendimentoBean")
@SessionScoped
public class AtendimentoBean {
private Atendimento atendimentoEdicao;
private Receptor receptorSelecionado;
private List<Atendimento> atendimentos = new ArrayList<Atendimento>();
private List<SelectItem> tiposHemoderivados;
private List<SelectItem> tiposSanguineos;
private List<SelectItem> receptores;
private List<DoadoresWrapper> ListaDoadores;
private List<Doador> doadoresSelecionados;
private List<Receptor> ListaReceptores;
public String inicializar() {
this.atendimentoEdicao = new Atendimento();
this.tiposHemoderivados = null;
this.tiposSanguineos = null;
this.atendimentos = null;
this.receptores = null;
this.ListaReceptores = null;
this.ListaDoadores = null;
return "incluirAtendimento2";
}
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
if (this.receptorSelecionado != null) {
atendimentoEdicao.setReceptor(receptorSelecionado);
}
new AtendimentoService().salvar(this.atendimentoEdicao);
FacesMessage msg = new FacesMessage(
"Atendimento Cadastrado com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
inicializar();
} catch (RegraNegocioException e) {
context.addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, e
.getMessage(), e.getMessage()));
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao cadastrar atendimento! "
+ e.getMessage());
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
}
public List<String> sugerirNomeReceptor(Object event) {
return new ReceptorService().pesquisarReceptores(event.toString());
}
public void excluir() {
FacesContext context = FacesContext.getCurrentInstance();
try {
new AtendimentoService().excluir(this.atendimentoEdicao);
this.atendimentos.remove(this.atendimentoEdicao);
FacesMessage msg = new FacesMessage(
"Atendimento excluído com sucesso!");
msg.setSeverity(FacesMessage.SEVERITY_INFO);
context.addMessage(null, msg);
} catch (RegraNegocioException e) {
context.addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, e
.getMessage(), e.getMessage()));
} catch (Exception e) {
e.printStackTrace();
FacesMessage msg = new FacesMessage(
"Erro inesperado ao excluir atendimento!");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
context.addMessage(null, msg);
}
}
public void selecionar(Receptor receptor) {
this.receptorSelecionado = receptor;
}
public List<Receptor> getListaReceptores() {
if (this.ListaReceptores == null) {
this.ListaReceptores = new ReceptorService().listarTodos();
}
return this.ListaReceptores;
}
public List<DoadoresWrapper> getListaDoadores() {
if (this.ListaDoadores == null) {
List<Doador> doadores = new DoadorService().listarTodos();
this.ListaDoadores = new ArrayList<DoadoresWrapper>();
if (doadores != null && !doadores.isEmpty()) {
for (Doador doador : doadores) {
DoadoresWrapper doadorWrapper = new DoadoresWrapper();
doadorWrapper.setDoador(doador);
ListaDoadores.add(doadorWrapper);
}
}
}
return this.ListaDoadores;
}
public List<SelectItem> getReceptores() {
if (this.receptores == null) {
this.receptores = new ArrayList<SelectItem>();
List<Receptor> receptores = new ReceptorService().listarTodos();
this.receptores.add(new SelectItem(null, "Selecione"));
for (Receptor receptor : receptores) {
this.receptores.add(new SelectItem(receptor, receptor
.getNomeReceptor()));
}
}
return receptores;
}
public List<SelectItem> getTiposHemoderivados() {
if (this.tiposHemoderivados == null) {
this.tiposHemoderivados = new ArrayList<SelectItem>();
this.tiposHemoderivados.add(new SelectItem(null, "Selecione"));
for (TipoHemoderivado tipos : TipoHemoderivado.values()) {
this.tiposHemoderivados.add(new SelectItem(tipos.toString()));
}
}
return tiposHemoderivados;
}
public List<SelectItem> getTiposSanguineos() {
if (this.tiposSanguineos == null) {
this.tiposSanguineos = new ArrayList<SelectItem>();
this.tiposSanguineos.add(new SelectItem(null, "Selecione"));
for (TipoSanguineo tipos : TipoSanguineo.values()) {
this.tiposSanguineos.add(new SelectItem(tipos.toString()));
}
}
return tiposSanguineos;
}
public Atendimento getAtendimentoEdicao() {
return atendimentoEdicao;
}
public void setAtendimentoEdicao(Atendimento atendimentoEdicao) {
this.atendimentoEdicao = atendimentoEdicao;
}
public Receptor getReceptorSelecionado() {
return receptorSelecionado;
}
public void setReceptorSelecionado(Receptor receptorSelecionado) {
this.receptorSelecionado = receptorSelecionado;
}
public List<Atendimento> getAtendimentos() {
return atendimentos;
}
public void setAtendimentos(List<Atendimento> atendimentos) {
this.atendimentos = atendimentos;
}
public List<Doador> getDoadoresSelecionados() {
return doadoresSelecionados;
}
public void setDoadoresSelecionados(List<Doador> doadoresSelecionados) {
this.doadoresSelecionados = doadoresSelecionados;
}
public void setTiposHemoderivados(List<SelectItem> tiposHemoderivados) {
this.tiposHemoderivados = tiposHemoderivados;
}
public void setTiposSanguineos(List<SelectItem> tiposSanguineos) {
this.tiposSanguineos = tiposSanguineos;
}
public void setReceptores(List<SelectItem> receptores) {
this.receptores = receptores;
}
public void setListaDoadores(List<DoadoresWrapper> listaDoadores) {
ListaDoadores = listaDoadores;
}
public void setListaReceptores(List<Receptor> listaReceptores) {
ListaReceptores = listaReceptores;
}
}