primeFaces password não dá feedback [RESOLVIDO]

5 respostas
jrfercar

Bom dia,

pessoa a ajuda de quem já passou por isso, para tentar resolver o problema do p:password do primefaces que exibe o balão do feedback mas não dá o feedback.

segue o código que apresenta o problema:

<p:password id="txtSenha" value="#{cadastroDePessoaBean.pessoaFisica.senha}" minLength="4" promptLabel="Digite uma senha segura" goodLabel="Boa" weakLabel="Razoável" strongLabel="Excelente" feedback="true" required="true" binding="#{cadastroDePessoaBean.passwordInput}">
                    <p:watermark for="txtSenha" value="Digite sua senha" />
                </p:password>

Segue todo o código da página:

<p:growl id="cadastro"/>
        <p:panel id="pnlDadosPessoais" header="Dados Pessoais" >
            <h:panelGrid columns="2" cellpadding="2" >
                <h:panelGrid columns="2" cellpadding="2" >
                    <p:graphicImage id="gpiFoto" value="#{cadastroDePessoaBean.stcImagem}" width="125" height="150" cache="false"/>
                    <h:panelGrid columns="1" cellpadding="1">
                        <p:fileUpload id="fluFotos" auto="true" image="//resources//images//upload.gif" 
                                      width="16" height="16" allowTypes="*.gif; *.png; *.jpg" description="imagem" 
                                      fileUploadListener="#{cadastroDePessoaBean.fileUploadAction}" update="gpiFoto" 
                                      customUI="true" wmode="false" widgetVar="uploader" sizeLimit="204800" />
                        <h:commandLink id="cmdLimparFoto" actionListener="#{cadastroDePessoaBean.limparFoto}" >
                            <h:graphicImage id="gpiLimparFoto" value="//resources//images//limpar.gif" width="10" height="10" />
                            <f:ajax render="gpiFoto" />
                        </h:commandLink>
                    </h:panelGrid>
                </h:panelGrid>
                <h:panelGrid columns="3" cellpadding="3">
                    <h:outputLabel value="Nome" for="txtNome"/>
                    <p:inputText id="txtNome" value="#{cadastroDePessoaBean.pessoaFisica.nome}" maxlength="255" required="true" size="80">
                        <p:watermark for="txtNome" value="Digite seu nome completo" />
                    </p:inputText>
                    <p:message id="msgNome" for="txtNome"/>
                    <h:outputLabel value="Data de Nascimento" for="txtDataDeNascimento" />
                    <p:calendar id="txtDataDeNascimento" value="#{cadastroDePessoaBean.pessoaFisica.dataDeNascimento}" required="true" locale="pt_BR" timeZone="America/Sao_Paulo" pattern="dd/MM/yyyy"/>
                    <p:message id="msgDataDeNascimento" for="txtDataDeNascimento" />
                    <h:outputLabel value="Sexo" for="optSexo" />
                    <h:selectOneRadio id="optSexo" value="#{cadastroDePessoaBean.pessoaFisica.sexo}">
                        <f:selectItems value="#{cadastroDePessoaBean.sexos}" var="sexo" itemLabel="#{sexo.toString()}" itemValue="#{sexo.get()}"/>
                    </h:selectOneRadio>
                    <p:message for="optSexo" />
                    <h:outputLabel value="CPF" for="txtCpf" />
                    <p:inputMask id="txtCpf" value="#{cadastroDePessoaBean.cpf}" validator="cpfValidator" converter="cpfConverter" mask="[CPF removido]">
                        <p:watermark for="txtCpf" value="CPF - Apenas números" />
                    </p:inputMask>
                    <p:message for="txtCpf" />
                </h:panelGrid>
            </h:panelGrid>
        </p:panel>
        <p:panel id="pnlEndereco" header="Endereço" >
            <h:panelGrid columns="3" cellpadding="3">
                <h:outputLabel value="Código Postal: " />
                <p:inputMask id="txtCep" value="#{cadastroDePessoaBean.cep}" mask="99999-999" size="10">
                    <p:ajax event="blur" listener="#{cadastroDePessoaBean.atualizaLogradouro}" update="pnlEndereco" />
                </p:inputMask>
                <p:message for="txtCep" />
                <h:outputLabel value="Logradouro" for="txtLogradouro"/>
                <p:inputText id="txtLogradouro" value="#{cadastroDePessoaBean.logradouro.nome}" size="80" />
                <p:message for="txtLogradouro" />
                <h:outputLabel value="Número" for="txtNumero" />
                <p:inputText id="txtNumero" value="#{cadastroDePessoaBean.endereco.numero}"/>
                <p:message for="txtNumero" />
                <h:outputLabel value="Complemento" for="txtComplemento" />
                <p:inputTextarea id="txtComplemento" value="#{cadastroDePessoaBean.endereco.complemento}" cols="80" rows="5"/>
                <p:message for="txtComplemento" />
                <h:outputLabel value="Bairro" for="txtBairro" />
                <p:inputText id="txtBairro" value="#{cadastroDePessoaBean.logradouro.bairro.nome}" readonly="true" size="80"/>
                <p:message for="txtBairro" />
                <h:outputLabel value="Cidade" for="txtCidade" />
                <p:inputText id="txtCidade" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.nome}" readonly="true" size="80"/>
                <p:message for="txtCidade" />
                <h:outputLabel value="Unidade Federativa" for="txtUF" />
                <p:inputText id="txtUF" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.unidadeFederativa.nome}" readonly="true" size="80"/>
                <p:message for="txtUF" />
                <h:outputLabel value="País" for="txtPais" />
                <p:inputText id="txtPais" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.unidadeFederativa.pais.nome}" readonly="true" size="80"/>
                <p:message for="txtPais" />
            </h:panelGrid>
        </p:panel>
        <p:panel id="pnlSenha" header="Segurança" >
            <h:panelGrid columns="3" cellpadding="3" >
                <h:outputLabel value="Senha" for="txtSenha"/>
                <p:password id="txtSenha" value="#{cadastroDePessoaBean.pessoaFisica.senha}" minLength="4" promptLabel="Digite uma senha segura" goodLabel="Boa" weakLabel="Razoável" strongLabel="Excelente" feedback="true" required="true" binding="#{cadastroDePessoaBean.passwordInput}">
                    <p:watermark for="txtSenha" value="Digite sua senha" />
                </p:password>
                <p:message for="txtSenha" />
                <h:outputLabel value="Confirma Senha" for="txtConfirmaSenha" />
                <p:password id="txtConfirmaSenha" value="#{cadastroDePessoaBean.confirmaPassword}" minLength="0" feedback="false" required="true" validator="#{cadastroDePessoaBean.validateSenha}">
                    <p:watermark for="txtConfirmaSenha" value="Confirme sua senha" />
                </p:password>
                <p:message id="msgConfirmaPassword" for="txtConfirmaSenha" />
            </h:panelGrid>
        </p:panel>
        <p:panel id="pnlEmail" header="Correio Eletrônico" >
            <h:panelGrid columns="3" cellpadding="3" >
                <h:outputLabel value="E-mail" for="txtEmail"/>
                <p:inputText id="txtEmail" value="#{cadastroDePessoaBean.strEmail}" required="true" binding="#{cadastroDePessoaBean.emailInput}">
                    <p:watermark for="txtEmail" value="Digite seu email" />
                </p:inputText>
                <p:message for="txtEmail" />
                <h:outputLabel value="Confirma E-mail" for="txtConfirmaEmail"/>
                <p:inputText id="txtConfirmaEmail" value="#{cadastroDePessoaBean.confirmaEmail}" required="true" validator="#{cadastroDePessoaBean.validateEmail}">
                    <p:watermark for="txtConfirmaEmail" value="Confirme seu email" />
                </p:inputText>
                <p:message id="msgEmail" for="txtEmail" />
            </h:panelGrid>
        </p:panel>
        <p:panel id="pnlContrato" header="Contrato">
            <center>
                <p:inputTextarea id="txtContrato" value="#{cadastroDePessoaBean.contrato.texto}" cols="100" rows="30" readonly="true" />
            </center>
        </p:panel>
        <h:commandLink id="cmdProximo" action="#{cadastroDePessoaBean.confirmar}">
            <h:graphicImage id="gpiProximo" value="//resources//images//limpar.gif" width="10" height="10" />
        </h:commandLink>

Desde já agradeço.

5 Respostas

jrfercar

Percebi que retirando o bloco de código relativo a endereço, o feedback acontece. Por que será?

Retirando este bloco abaixo:

<h:outputLabel value="Código Postal: " />
                <p:inputMask id="txtCep" value="#{cadastroDePessoaBean.cep}" mask="99999-999" size="10">
                    <p:ajax event="blur" listener="#{cadastroDePessoaBean.atualizaLogradouro}" update="pnlEndereco" />
                </p:inputMask>
                <p:message for="txtCep" />
                <h:outputLabel value="Logradouro" for="txtLogradouro" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:outputText id="txtLogradouro" value="#{cadastroDePessoaBean.logradouro.nome}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:message for="txtLogradouro" />
                <h:outputLabel value="Número" for="txtNumero" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <p:inputText id="txtNumero" value="#{cadastroDePessoaBean.endereco.numero}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <p:message for="txtNumero" />
                <h:outputLabel value="Complemento" for="txtComplemento" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <p:inputTextarea id="txtComplemento" value="#{cadastroDePessoaBean.endereco.complemento}" cols="80" rows="5" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <p:message for="txtComplemento" />
                <h:outputLabel value="Bairro" for="txtBairro" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:outputText id="txtBairro" value="#{cadastroDePessoaBean.logradouro.bairro.nome}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:message for="txtBairro" />
                <h:outputLabel value="Cidade" for="txtCidade" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:outputText id="txtCidade" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.nome}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:message for="txtCidade" />
                <h:outputLabel value="Unidade Federativa" for="txtUF" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:outputText id="txtUF" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.unidadeFederativa.nome}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:message for="txtUF" />
                <h:outputLabel value="País" for="txtPais" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:outputText id="txtPais" value="#{cadastroDePessoaBean.logradouro.bairro.cidade.unidadeFederativa.pais.nome}" rendered="#{cadastroDePessoaBean.renderizarLogradouro}"/>
                <h:message for="txtPais" />
jrfercar

Bom dia,

Fiquei quebrando cabeça ontem a noite e consegui solucionar o problema apenas retirando o <p:watermark for=“txtSenha” value=“Digite sua senha” /> .

O bloco relacionado a senha ficou assim então:

&lt;h:outputLabel value="Senha" for="txtSenha"/&gt;
                    &lt;p:password id="txtSenha" value="#{cadastroDePessoaBean.pessoaFisica.senha}" minLength="4" promptLabel="Digite uma senha segura" goodLabel="Boa" weakLabel="Razoável" strongLabel="Excelente" feedback="true" required="true" binding="#{cadastroDePessoaBean.passwordInput}"/&gt;
                    &lt;p:message for="txtSenha" /&gt;

Não sei o porque, devido a estar funcionando com o watermark em várias ocasiões. Mas fica ai, se alguém tiver um problema parecido com o meu, tente tirar o watermark o password.

Valeu.

LaercioPontin

Olá jrfercar,

Vendo que já trabalho com passoword do primefaces, gostaria de saber se conseguiu pegar o feedback do campo, para permitir o usuário entrar com senha ao qual tenha recebido um status de good!

Grato pela atenção

jrfercar

Olá boa tarde,

pelo que entendi, você deseja estabelecer um nível mínimo de qualidade para a senha.

se for assim, você pode fazer uso do parâmetro level do p:password.

este parâmetro level pode receber 1,2 ou 3, dependendo da complexidade da senha exigida.

LaercioPontin

Isso mesmo, e compreendi sua ideia.
Valeu.

Criado 28 de julho de 2011
Ultima resposta 1 de mar. de 2012
Respostas 5
Participantes 2