Renderização de PanelGroup e botão

0 respostas
Andre.flu

O problema deve ser bem simples.

Veja a pagina abaixo: há 02 panelGroup onde eu renderizo um deles quando coloco o objeto Curso para edição, ou seja, o panelgroup primeiro aparece quando estou editando e o segundo com o filtro e o botão “novo” aparece inicialmente na tela.

<h:form>
               <h:messages/>
               <h:panelGroup rendered="#{cadastroCursoCadastroBasicoBean.existirEdicao}">
                   <h:panelGrid columns="2" id="pg" >
                                
                       <h:outputText value="Sigla:"/>
                       <h:inputText size="10"
                                    value="#{cadastroCursoCadastroBasicoBean.curso.sigla}"
                                    maxlength="3"/>

                       <h:commandButton value="Salvar"
                                        action="#{cadastroCursoCadastroBasicoBean.salvar}"/>
                       <h:commandButton value="Cancelar"
                                        action="#{cadastroCursoCadastroBasicoBean.cancelar}"/>

                   </h:panelGrid>

               </h:panelGroup>
               <h:panelGroup rendered="#{!cadastroCursoCadastroBasicoBean.existirEdicao}">

                   <h:panelGrid columns="4" >

                      <h:commandButton value="Novo" immediate="true"
                                       action="#{cadastroCursoCadastroBasicoBean.novo}"/>
                      <h:inputText value="#{cadastroCursoCadastroBasicoBean.cursoExemplo.sigla}"
                                   maxlength="3"/>
                      <h:commandButton value="Pesquisar"
                                       action="#{cadastroCursoCadastroBasicoBean.pesquisar}"/>

                  </h:panelGrid>


                   <h:dataTable value="#{cadastroCursoCadastroBasicoBean.listaCurso}"
                               var="row" >

                    <h:column>
                      <f:facet name="header" >
                          <h:outputLabel value="Sigla"/>
                      </f:facet>
                      <h:outputText value="#{row.sigla}"/>
                    </h:column>

                  </h:dataTable>

               </h:panelGroup>
                          
            </h:form>

aqui esta o bean:

public class CadastroCursoCadastroBasicoBean extends ManageBean {

    private Curso curso = null;
    private Curso cursoExemplo = new Curso();
    private List<Curso> listaCurso = null;

    /** Creates a new instance of CadastroCursoCadastroBasicoBean */
    public CadastroCursoCadastroBasicoBean() {

        this.atualizarLista();
       
    }

    private void atualizarLista(){
        this.listaCurso = AdminBasico.getListaCurso(cursoExemplo);
    }

    public String salvar(){

        try {
            
            AdminBasico.salvarCurso(this.curso);
            
            this.atualizarLista();
            this.curso = null;

            super.addMessageSucesso();

            return null;

        } catch(Exception e){

            super.addMessage(e);

        }
        return null;
        
    }

    public String novo(){
        
        this.curso = new Curso();

        return null;
    }

    public String cancelar(){

        this.curso = null;

        return null;
    }

    public String pesquisar(){

        this.listaCurso = AdminBasico.getListaCurso(this.cursoExemplo);

        return null;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public Curso getCursoExemplo() {
        return cursoExemplo;
    }

    public void setCursoExemplo(Curso cursoExemplo) {
        this.cursoExemplo = cursoExemplo;
    }

    public List<Curso> getListaCurso() {
        return listaCurso;
    }

    public void setListaCurso(List<Curso> listaCurso) {
        this.listaCurso = listaCurso;
    }

    public boolean existirEdicao(){
        return this.curso != null;
    }

     public boolean isExistirEdicao(){
        return this.curso != null;
    }

e aqui esta a configuração do faces-config

<managed-bean>
        <managed-bean-name>cadastroCursoCadastroBasicoBean</managed-bean-name>
        <managed-bean-class>br.es.esab.uccadastrobasico.bean.CadastroCursoCadastroBasicoBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

O problema esta que quando clico no novo ele abre o painel para edição e quando clico no botão salvar não passa pelo salvar e volta para o painel inicial?
Mas se eu colocar <managed-bean-scope>session</managed-bean-scope>, funciona mais tenho que tratar tudo na sessão e queria tratar no request.

Outra coisa aproveitando a pergunta: quando tenho uma validação dentro do objeto que estou editando, por exemplo dentro do setNome do curso coloco uma exception e clico no salvar blz, a execption é exiba na tela, mas se clico no cancelar a validação tb é executada e não queria, mas se coloco imediate=true no botão cancelar passa, mas não passa pelo metodo de cancelar do meu bean. e agora como resolve isso?

Criado 2 de fevereiro de 2010
Respostas 0
Participantes 1