Ola alguem sabe fazer ou tem algum exemplo de como realizar estas seleções com JSF sem usar o TomaHank ou outra implementação
Obrigado.
Ola alguem sabe fazer ou tem algum exemplo de como realizar estas seleções com JSF sem usar o TomaHank ou outra implementação
Obrigado.
Resolvi a questão dos radio com esse post meu, mas ainda tenho um problema ; selecionar apenas um
[url]http://www.guj.com.br/java/290173-problema-com-selectoneradio-em-datatable#1535364[/url]
, com a diferença que ao invés de usar UIdatatable será apenas HTMLDataTable para usar em JSF Puro.
public class DoadoresWrapper {
private Doador doador;
private boolean selecionado;
}
A dataTable fica assim:
<?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>
<rich:popupPanel id="modalPanelDoador" modal="false" width="600"
moveable="false">
<f:facet name="header">
<h:outputText value="Defina os doadores"></h:outputText>
</f:facet>
<f:facet name="controls">
<h:outputLink value="#" style="text-decoration:none;"
onclick="#{rich:component('modalPanelDoador')}.hide(); return false;">X</h:outputLink>
</f:facet>
<rich:dataTable value="#{atendimentoBean.listaDoadores}"
var="_doador" style="width: 100%;"
noDataLabel="Não existem receptores cadastrados.">
<rich:column width="40%">
<f:facet name="header">
<h:outputText value="Selecione" />
</f:facet>
<h:selectBooleanCheckbox value="#{_doador.selecionado}" />
</rich:column>
<rich:column width="40%">
<f:facet name="header">
<h:outputText value="Nome do Doador" />
</f:facet>
<h:outputText value="#{_doador.doador.nomeDoador}"></h:outputText>
</rich:column>5
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo sanguíneo do doador" />
</f:facet>
<h:outputText value="#{_doador.doador.tipoSanguineo}"></h:outputText>
</rich:column>
<rich:column width="25%">
<f:facet name="header">
<h:outputText value="Tipo Hemoderivado do doador" />
</f:facet>
<h:outputText value="#{_doador.doador.tipoHemo}"></h:outputText>
</rich:column>
</rich:dataTable>
<a4j:commandButton value="OK"
onclick="#{rich:component('modalPanelDoador')}.hide(); return false;" />
</rich:popupPanel>
<br />
</f:view>
</h:body>
</html>
a minha lista é povoada assim:
tenho estes atributos no ManagedBean:private List<DoadoresWrapper> listaDoadores;
private List<Doador> doadoresSelecionados;
para povoar a DataTable uso isto, que basicamente percorre a lista de DoadoresWrappers (que é um DTO, contendo objetos do tipo DOADOR), onde se a lista for igual a null ou não ter registros, isEmtpy, a list<Doador> recebe a implementação no service de listagem de todos os registros
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;
}
Ao salvar mais um truque:
Ao salvar, o método é chamado a partir de uma iteração no botão (commandButton), depois...
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
List<Doador> doadores = new ArrayList<Doador>();
for (DoadoresWrapper doadoresWrapper : listaDoadores) {
if (doadoresWrapper.isSelecionado()) {
doadores.add(doadoresWrapper.getDoador());
}
List<Receptor> receptores = new ArrayList<Receptor>();
for (Receptor receptorSelecionado : receptores) {
receptores.add(receptorSelecionado);
}
}
atendimentoEdicao.setReceptor(receptorSelecionado);
atendimentoEdicao.setDoadores(doadores);
new AtendimentoService().salvar(this.atendimentoEdicao);
atendimentoEdicao.setDoadores(doadores);
<rich:column width="40%">
<f:facet name="header">
<h:outputText value="Selecione" />
</f:facet>
<h:selectBooleanCheckbox value="#{_doador.selecionado}" />
</rich:column>
Respondendo tua dúvida sobre os radioButtons:
para obter qualquer atributo a partir de uma dataTable: usará isso, caso use richfaces, para JSF Puro usará apenas HTMLDataTable.private UIDataTable uiDataTable;
para obter um valor selecionado a partir de uma linha:
public void setReceptorSelecionado(ValueChangeEvent event) {
receptorSelecionado = (Receptor) uiDataTable.getRowData();
System.out.println(receptorSelecionado);
listaReceptores = new ArrayList<Receptor>();
listaReceptores.add(receptorSelecionado);
}
public void salvar(ActionEvent event) {
FacesContext context = FacesContext.getCurrentInstance();
try {
List<Doador> doadores = new ArrayList<Doador>();
for (DoadoresWrapper doadoresWrapper : listaDoadores) {
if (doadoresWrapper.isSelecionado()) {
doadores.add(doadoresWrapper.getDoador());
}
List<Receptor> receptores = new ArrayList<Receptor>();
for (Receptor receptorSelecionado : receptores) {
receptores.add(receptorSelecionado);
}
Qualquer dúvida este é meu e-mail: [email removido]
Se for implementar minha dica, me ajuda também, por favor.
Detalhe, preciso de uma mão aqui....
[url]http://www.guj.com.br/java/290173-problema-com-selectoneradio-em-datatable#1535364[/url]
Foi útil? Conseguiu?