Boa noite, estou trabalhando em um projeto de cursos online que atenderá toda a comunidade, o projeto é na linguagem jsf utilizando Primefaces.
Tenho um problema com accordion panel criei 3 acordion pannel um dentro do outro, um com o nome da etapa, um com as atividades daquela etapa e um com os materiais da etapa, e dentro de cada accordion tem um inserir, no da etapa para inserir etapa assim como alterar, no do material a mesma coisa e assim por diante, porém quando tento utilizar o ontabchange para pegar o id da etapa selecionada ou material que seja além de demorar muito tenho um problema ao executar a tela todos os botões percorrem um tipo de for e são clicados, alguém tem alguma ideia de como fazer isso de uma maneira que funcione, vou postar aqui o xhtm o controller se não intender só avisar.
[code] <h:body style=“font-size: 12px”>
<h:form id=“lista”>
<p:panel header="#{cursoController.curso.nome}" id=“painelCurso”>
<br/>
<h:outputText value="Professor: #{cursoController.curso.professor.nome}"/>
<br/><br/>
<p:accordionPanel activeIndex="null" id="etapas" value="#{cursoController.curso.etapas}" var="etapas" multiple="true">
<p:ajax listener="#{cursoController.onTabChangeEtapa}" />
<p:tab title="#{etapas.descricao}">
<p:commandButton value="Alterar" icon="ui-icon-arrowrefresh-1-w"/>
<p:commandButton value="Excluir" icon="ui-icon-close"/>
<p:commandButton value="Adicionar Material" icon="ui-icon-disk" onclick="inserirMaterial.show();"/>
<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.nomearquivo}">
<p:commandButton value="Alterar"
icon="ui-icon-arrowrefresh-1-w"
actionListener="#{materialController.prepararAlteriarMaterial()}"
oncomplete="inserirMaterial.show();"/>
<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>
<p:commandButton id="inserir" value="Adicionar Etapa" onclick="inserir.show();" icon="ui-icon-disk" type="button"/>
</p:panel>
</h:form>
<p:dialog id="modalDialog" header="Cadastro de Etapa" widgetVar="inserir" modal="true" height="150" width="450" resizable="false">
<h:form id="etapa">
<p:growl id="mess"/>
<h:panelGrid id="cadastro" columns="2">
<h:outputLabel value="Descrição"/>
<p:inputText value="#{etapaController.etapa.descricao}" required="true" maxlength="50" label="Descrição" size="30"/>
<h:outputLabel value="Status"/>
<p:selectOneMenu value="#{etapaController.etapa.status}" required="true" style="width:150px" label="Status">
<f:selectItem itemLabel="Selecione" />
<f:selectItem itemLabel="Ativo" itemValue="Ativo" />
<f:selectItem itemLabel="Inativo" itemValue="Inativo" />
</p:selectOneMenu>
<p:commandButton value="Cadastrar" icon="ui-icon-disk" update=":lista,mess" oncomplete="incluir(xhr, status, args)" actionListener="#{etapaController.inserir}"/>
<p:commandButton value="Cancelar" icon="ui-icon-close" onclick="inserir.hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
<p:dialog id="modalDialogInserirMaterial" header="Cadastro de Material" widgetVar="inserirMaterial" modal="true" height="450" width="700" resizable="false">
<h:form id="atividade">
<p:growl id="mess2"/>
<f:param id="idEtapa" value="#{cursoController.material.idMaterial}" />
<h:panelGrid id="cadastro" columns="2">
<h:outputText value="Nome*:"/>
<p:inputText value="#{cursoController.material.nomearquivo}" required="true" maxlength="20" size="40" label="nome"/>
<h:outputText value="Descrição*:"/>
<p:editor value="#{cursoController.material.descricao}" required="true" label="descricao" cols="43" rows="10" />
<h:outputText value="Tipo*:" />
<p:selectOneMenu value="#{cursoController.material.tipo}" required="true" style="width:150px" label="Tipo">
<f:selectItem itemLabel="Selecione" />
<f:selectItem itemLabel="Audio" itemValue="Audio" />
<f:selectItem itemLabel="Documento de Texto" itemValue="Documento de Texto" />
<f:selectItem itemLabel="Imagem" itemValue="Imagem" />
<f:selectItem itemLabel="Vídeo" itemValue="Vídeo" />
</p:selectOneMenu>
<h:outputLabel value="Arquivo*:"/>
<p:fileUpload label="Procurar" mode="advanced" required="true"
auto="true" sizeLimit="100000000" />
<p:commandButton value="Cadastrar" update="mess2" actionListener="#{cursoController.inserirMaterialNaEtapa()}"/>
<p:commandButton value="Cancelar" oncomplete="inserirMaterial.hide();" />
</h:panelGrid>
</h:form>
</p:dialog>
<script type="text/javascript">
function incluir(xhr, status, args) {
if(args.validationFailed) {
jQuery('#inserir').effect("shake", { times:3 }, 100);
} else {
inserir.hide();
jQuery('#loginLink').fadeOut();
}
}
</script>
</h:body>[/code]
controller
[code]public class CursoController implements Serializable {
//all
int aux = 0;
//curso
private CursoBean curso = new CursoBean();
private CursoBean cursoAluno = new CursoBean();
//etapa
public EtapaBean etapaSelecionada = new EtapaBean();
//material
private MaterialBean material = new MaterialBean();
public MaterialBean materialSelecionado = new MaterialBean();
private boolean alterarMaterial = true;
//atividade
private AtividadeBean atividade = new AtividadeBean();
public AtividadeBean atividadeSelecionada = new AtividadeBean();
private boolean alterarAtividade = true;
//get/set
public void setAtividade(AtividadeBean atividade) {
this.atividade = atividade;
}
public AtividadeBean getAtividade() {
return atividade;
}
public MaterialBean getMaterial() {
return material;
}
public void setMaterial(MaterialBean material) {
this.material = material;
}
//inserir, alterar e excluir
public void prepararAlterarMaterial(ActionEvent action) {
aux = aux + 1;
alterarMaterial = false;
System.out.println("fudeu pq ele percorre a lista--> " + aux);
}
public void prepararAlterarAtividade(ActionEvent action) {
alterarAtividade = false;
}
public void inserirMaterialNaEtapa() {
material.setEtapa(etapaSelecionada);
try {
if (alterarMaterial == true) {
MaterialDAO.inserir(material);
Mensagem.mensagem("Material incluído com Sucesso");
System.out.println(material.getNomearquivo() + " adicionado com sucesso");
} else if (alterarMaterial == false) {
material.setIdMaterial(materialSelecionado.getIdMaterial());
MaterialDAO.alterar(material);
Mensagem.mensagem(material.getNomearquivo() + " foi alterado");
}
limpaMaterial();
alterarMaterial = true;
} catch (Exception e) {
e.printStackTrace();
Mensagem.mensagem("Erro");
}
}
public void inserirAtividadeNaEtapa() {
try {
atividade.setEtapa(etapaSelecionada);
if (alterarAtividade == true) {
AtividadeDAO.inserir(atividade);
Mensagem.mensagem("Atividade incluída com Sucesso");
System.out.println(atividade.getNomearquivo() + " adicionada com sucesso");
} else if (alterarAtividade == false) {
atividade.setIdAtividade(atividadeSelecionada.getIdAtividade());
AtividadeDAO.alterar(atividade);
Mensagem.mensagem("Atividade alterada com Sucesso");
System.out.println(atividade.getNomearquivo() + " foi alterada");
}
} catch (Exception e) {
e.printStackTrace();
Mensagem.mensagem("Erro");
}
limpaAtividade();
}
public void excluirMaterial() {
try {
MaterialDAO.excluir(materialSelecionado);
Mensagem.mensagem("Excluído com sucesso");
System.out.println(materialSelecionado.getNomearquivo() + " excluido com sucesso!");
} catch (Exception e) {
e.printStackTrace();
Mensagem.mensagem("Erro ao excluir");
}
}
//limpar
public void limpaAtividade() {
atividade = new AtividadeBean();
}
public void limpaMaterial() {
material = new MaterialBean();
}
//tab change
public void onTabChangeEtapa(TabChangeEvent event) {
try {
etapaSelecionada = (EtapaBean) event.getData();
System.out.println("Etapa selecionada = " + etapaSelecionada.getDescricao()+" id="+etapaSelecionada.getIdEtapa());
} catch (Exception e) {
e.printStackTrace();
}
}
public void onTabChangeMaterial(TabChangeEvent event) {
try {
materialSelecionado = (MaterialBean) event.getData();
System.out.println("Material selecionado = " + materialSelecionado.getNomearquivo()+" id material "+materialSelecionado.getIdMaterial());
} catch (Exception e) {
e.printStackTrace();
}
}
public void onTabChangeAtividade(TabChangeEvent event) {
try {
atividadeSelecionada = (AtividadeBean) event.getData();
System.out.println("Atividade Selecionada = " + atividadeSelecionada.getNomearquivo());
} catch (Exception e) {
e.printStackTrace();
}
}
public CursoBean getCurso() {
try {
return CursoDAO.getCurso(2);
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}
public void setCurso(CursoBean curso) {
this.curso = curso;
}
}[/code]
Agradeço muito se ajudarem