Problema com "pegar" objeto de um accordionPanel Primefaces jsf

1 resposta
L

Olá pessoal, como podem ver fiz meu cadastro hoje, apesar disso já utilizei várias vezes o fórum, porém nunca precisei perguntar, estou com uma pulga atras da orelha, para ficarem mais por dentro é o seguinte, é um sistema de cursos online, inclusive será opensource o código mais não vem ao caso, um curso possui n etapas que podem possuir n atividades e n materiais, é o seguinte, tenho um accordionPanel listando etapas, dentro de cada etapa mais 2 accordinpanel listando materiais e atividades, porém para cadastrar uma atividade preciso do idEtapa(no banco) cada etapa terá um botão de cadastro de atividades e materiais, não estou conseguindo pegar esse idEtapa para passar como parâmetro para a atividade em uma dialog para poder cadastrar (espero que entendam isso :? ) já tentei de diversas formas com onTabchange porém o ontabchange pegou apenas o id do xhtml, e também passar por método no próprio botão estou sem idéias e procurei muito e não encontrei... Vejam abaixo:

<p:accordionPanel activeIndex="null" id="etapas" value="#{cursoController.curso.etapas}" var="etapas" multiple="true">
                    
                      <p:tab title="#{etapas.descricao}" id="teste">  
                        <p:commandButton value="Alterar" icon="ui-icon-arrowrefresh-1-w"/>
                        <p:commandButton value="Excluir" icon="ui-icon-close"/>
                        <p:commandButton value="Adicionar Material" onclick="inserirMaterial.show();" icon="ui-icon-disk" type="button"/>
                        <p:commandButton value="Adicionar Atividade" icon="ui-icon-disk"/>
                        <br/><br/>
                        <h:outputText value="Materiais"/>
                        <br/>
                        <p:accordionPanel activeIndex="null" id="materiais" value="#{etapas.materiais}" var="m" multiple="true">
                            <p:tab title="#{m.descricao}">
                                <p:commandButton value="Alterar" icon="ui-icon-arrowrefresh-1-w"/>
                                <p:commandButton value="Excluir" icon="ui-icon-close"/> <br/><br/>
                            </p:tab>            
                        </p:accordionPanel>
                        <br/>
                        <h:outputText value="Atividades"/>
                        <p:accordionPanel activeIndex="null" id="atividades" value="#{etapas.atividades}" var="a" multiple="true">
                            <p:tab title="#{a.descricao}">  
                                <p:commandButton value="Alterar" icon="ui-icon-arrowrefresh-1-w"/>
                                <p:commandButton value="Excluir" icon="ui-icon-close"/> <br/><br/>
                            </p:tab>            
                        </p:accordionPanel>

                    </p:tab>    
                </p:accordionPanel>

se puderem ajudar eu ficaria muito grato. Peço desculpas caso haja algum erro de regras do fórum.

1 Resposta

H

Olá, tente fazer desta forma:

Adicione a linha

<p:ajax event="tabChange" listener="#{cursoController.onTabChange}" />

depois da criação do <p:accordionPanel

Dai no seu controler crie o método

public void onTabChange(TabChangeEvent event) {
        SeuObjeto obj = (SeuObjeto) event.getData();
         System.out.println(obj.getSeuAtributo());
    
}

Desta forma consegue pegar o objeto da linha selecionada no accordionPanel.

Espero ter ajudado.

Criado 27 de setembro de 2012
Ultima resposta 1 de out. de 2012
Respostas 1
Participantes 2