Exibir rich:modalPanel apenas ao efetuar uma transação! Não consigo realizar a questão!

Olá pessoal do forum, bom dia.
Estou tendo um problema ao exibir o modalPanel apenas quando a transação for executada.
Tenho um controller com o método icluirCurso do tipo String conforme abaixo:


public String incluirCurso() {
      FacesContext context = FacesContext.getCurrentInstance();
        ManterCursosForm formCurso = (ManterCursosForm) context.getApplication().getExpressionFactory().createValueExpression(context.getELContext(), "#{manterCursosForm}", ManterCursosForm.class).getValue(context.getELContext());
    	try {
    	    ManterCursosValidator validatorCurso = new ManterCursosValidator();
    		if (validatorCurso.validaCurso()) {
                Curso curso = new Curso();
                curso.setCodigo(formCurso.getCodigo());
                curso.setDescricao(formCurso.getDescricao());
                Professor controladorProfessor = new ManterProfessoresController().verificarProfessor(formCurso.getProfessorSelecionado());
                curso.setProfessor(controladorProfessor);
                curso.setCargaHoraria(formCurso.getCargaHoraria());
                curso.setQtdePeriodos(formCurso.getQtdePeriodos());
                curso.setTipoCurso(formCurso.getTipoCursoSelecionado());
                CursoDAO cursoDAO = new CursoDAO();
                cursoDAO.salvar(curso);
                Mensagem.setExibeMensagemComponente("formPrincipal:iphMensagem", "msg.curso.inclusao.sucesso");
                carregarListaCursos();
            }
    		else
    			return null;
        } catch (Exception e) {
        	Mensagem.setExibeMensagemComponente("formPrincipal:iphMensagem", "msg.curso.inclusao.erro");
            Logger.getLogger(CursoDAO.class.getName() + e);
        }
        return null;
}

Porém quando não é feito a validação dos campos, ou seja, validatorCurso.validaCurso() retorna falso, o modalPanel é exibido vazio. Gostaria que o mesmo fosse exibido apenas quando a validação e a transação tiver sido realizada. Estou utilizando no jsf o evento onComplete=“Richfaces.showModalPanel(‘mpAviso’)” do commandButton de inclusão, porém este é o problema, mesmo que a validação não seja efetuada, pelo fato de ele ter completado o método, ele exibe o modal.
Como exibir o modal apenas quando a validação e a transação estiver sido realizada? Alguém tem uma idéia?

Agradeço desde já pela atenção,
Atenciosamente,
Lessandro

Oi,

Você pode fazer isto na página:

oncomplete="#{managedBean.oncomplete}"

Daí é só setar oncomplete = “Richfaces.showModalPanel(‘mpAviso’)” quando você quiser exibir o modal, se não quiser exibir deixe em branco (oncomplete="").

ok.
Obrigado pela resposta.
Vou estar realizando os testes aki e em breve estarei retornando se funcionou.
Vlw
Abraços

Você pode fazer um binding do modalpanel e chamado no corpo da função com o método: seuModalPanel.setShowWhenRendered(true);
Caso não queira abri-lo deixe-o como está.
Não se esqueça de coloca-lo no reRender no botão e retirar o trexo "oncomplete=“Richfaces.showModalPanel(‘seuModalPanel’);”, isso não será mais necessário.

Ola amigo.
Agradeço também a sua dica, mas a do amigo acima funcionou como uma luva.
Abraços a todos vocês que estão sempre dispostos a ajudar,
Att,
Lessandro