rich:dataTable com selectOneRadio

217 views
Skip to first unread message

marqu...@gmail.com

unread,
May 22, 2011, 4:25:05 PM5/22/11
to javasf: JavaServer Faces Group
Colegas,
Preciso criar um selectOneRadio por linha da rich:dataTable.
Da forma como está abaixo ele gera a tabela com os selectOneRadio,
porém não consigo selecionar apenas um.
Parece-me que falta colocar esses selectOneRadio em um grupo de
radios.
Não estou conseguindo criar esse grupo de radios.

Vc pode me ajudar? Caso vc tenha um exemplo de como resolver, mesmo
que de forma diferente eu agradeço.
Estou usando richfaces.

Muito obrigado,

Marques


<rich:dataTable value="#{myAction.lista}" var="myItem">
<rich:column>
<f:facet name="header">Select</f:facet>
<h:selectOneRadio id="myRadio" value="#{myAction.selectedRow}">
<f:selectItem itemValue="#{myItem.id}" itemLabel="#{myItem.id}" />
</h:selectOneRadio>
</rich:column>
<rich:column>
<f:facet name="header">Description</f:facet>
<h:outputText value="#{myItem.description}" />
</rich:column>
</rich:dataTable>

Flavio Cysne

unread,
May 23, 2011, 8:16:44 AM5/23/11
to jav...@googlegroups.com
Marques,

    fiz isso uma vez, com JSF 2, mas não é uma solução tão trivial.

1. Crie uma classe wrapper para o seu objeto que contenha os atributos "private Boolean selected" e "private MeuObjeto meuObjeto" com seus getters e setters
2. Defina no seu bean um atributo com a lista de wrapper e um outro como "private MeuObjeto selected", e os getters e setters e ambos
2. Preencha a lista de wrapper no seu Bean setando o atributo selected, de cada elemento da lista, para false e o atributo  meuObjeto com as instâncias trazidas do seu método de busca (DAO, EJB, etc) original.
3. No datatable, defina o atributo rowIndex="ind"
4. No h:selectOneRadio defina o atributo id="myRadio#{ind}"
5. Adicione ao h:selectOneRadio as tags abaixo:
    <f:setPropertyActionListener target="#{meuBean.selected}" value="#{myItem.meuObjeto}" />
    <f:attribute name="name" value="myRadioGroup" />

Posso ter esquecido de algum passo, pois não tenho o exemplo original aqui comigo. Mas fica a tentativa.

Espero ter ajudado.
Flávio Cysne


--
Você recebeu esta mensagem por que é membro do  Javasf
http://groups.google.com/group/javasf

Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Lucas De Luca Castro

unread,
May 24, 2011, 1:29:21 PM5/24/11
to jav...@googlegroups.com
Marques,


utilizei esse exemplo com jsf 1.2

http://www.javabeat.net/tips/72-how-to-use-hselectoneradio-inside-hdatatabl.html

mas inves de usar
valueChangeListener="#{jsfBean.setSelected}">

coloquei um a4j:support com evento de change e actionListener


Abraço

Lucas
Message has been deleted

luxu

unread,
Dec 11, 2012, 5:56:12 PM12/11/12
to jav...@googlegroups.com
meu view:
<p:dataTable id="tabela" value="#{alunoBean.alunos}" var="aluno" binding="#{alunoBean.tabela}" >
                       <p:column headerText="e-Mail" footerText="RG" style="width:100px;">
<h:outputText value="#{aluno.email}" />
</p:column>
<p:column style="width:100px">

     <p:commandButton image="ui-icon-pencil" title="Alterar"     actionListener="#{alunoBean.alterar}" update="formPrincipal" />
                             <p:commandButton image="ui-icon-trash"   title="Remover" oncomplete="confirmdlg.show()" >
     <f:setPropertyActionListener value="#{aluno}" target="#{alunoBean.tipoAlunoSelecionado}" />
                             </p:commandButton>
</p:column>
</p:dataTable>

meu bean:

public DataModel getAlunos(){
if(this.model == null){
InterfaceDAO<Aluno> alunoDAO = new HibernateDAO<Aluno>(Aluno.class,FacesContextUtil.getRequestSession());
model = new ListDataModel(alunoDAO.getBeansByExample(aluno));
}
return model;
}
Reply all
Reply to author
Forward
0 new messages