1
resposta

Não é feito o redirecionamento

Criei um formulario simples, ao submeter ele executa o método mas não me redireciona

UsuarioBean:

@Model
public class UsuarioBean {

    @Inject
    private UsuarioDao usuarioDao;
    @Inject
    private Usuario usuario;
    private String confirmaSenha;

    @Transactional
    public String cadastrar() {
        if(usuario.getSenha().equals(confirmaSenha)) {
            usuarioDao.persist(usuario);
            return "index?faces-redirect=true";
        }
        return "cadastrar";
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getConfirmaSenha() {
        return confirmaSenha;
    }

    public void setConfirmaSenha(String confirmaSenha) {
        this.confirmaSenha = confirmaSenha;
    }

}

Formulario:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/_home_template.xhtml">
    <ui:define name="title">Cadastrar</ui:define>
    <ui:define name="body">
        <h:form >
            <p:fieldset legend="Cadastrar">
            <h:panelGrid columns="3" > 
                    <h:outputLabel value="Email:" for="email" />
                    <p:inputText id="email" value="#{usuarioBean.usuario.email}" required="true" requiredMessage="Insira um email" validatorMessage="falta inserir @xxx">
                        <f:validateRegex pattern=".+@+.+"/>
                    </p:inputText>
                    <p:message for="email"/>

                    <h:outputLabel value="Nome Completo:" for="nome" />
                    <p:inputText id="nome" value="#{usuarioBean.usuario.nome}" required="true" requiredMessage="Insira um nome"/>
                    <p:message for="nome"/>

                    <h:outputLabel value="Senha:" for="senha" />
                    <p:password value="#{usuarioBean.usuario.senha}" id="senha" feedback="true" required="true" requiredMessage="Insira uma senha">
                        <f:validateLength minimum="5"  />
                    </p:password>
                    <p:message for="senha"/>

                    <h:outputLabel value="Confirmar senha:" for="confirmarSenha" />
                    <p:password value="#{usuarioBean.confirmaSenha}" id="confirmarSenha" required="true" requiredMessage="Repita a senha">
                        <f:validateLength minimum="5" />
                    </p:password>
                    <p:message for="confirmarSenha"/>

                    <p:commandButton value="Cadastrar" action="#{usuarioBean.cadastrar()}" ajax="false" />
                </h:panelGrid>
            </p:fieldset>
        </h:form>
    </ui:define>
</ui:composition>
</html>
1 resposta

Olá Nícolas, tudo bem?

Você pode tentar utilizar a tag <h:commandButton> em vez de <p:commandButton>. A tag <h:commandButton> é nativa do JSF e pode funcionar melhor nesse caso.

Além disso, poderia confirmar o diretório do formulário cadastrar?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software