Tela de Login ( Não foi possível encontrar o componente com a ID na exibição.)

9 respostas
E

Tentei fazer dessa forma :

<h:form id="formindexlogin">    
             <p:panel style="left:100px; width:400px;height:170px;">  
                 <f:facet name="header">  
    t;h:outputText value="#{msg.login_titulo}" />  
    </f:facet>         
                   
                   
                     <h:panelGrid columns="2" styleClass="center-table" style="text-align:right;">                                                         
                         <h:outputText value="#{msg.login_usuario_login}:" />  
                         <p:inputText id="#{msg.login_usuario_login}" value="#{tblusuMbean.obj1.usunome}" />      
                         <h:outputText value="#{msg.login_usuario_senha}:" />                              
                         <p:password   
                                     required="true" id="#{msg.login_usuario_senha}"   
                                     label="#{msg.login_usuario_senha}"   
                                     value="#{tblusuMbean.obj1.ususenha}" />  
      
                         <p:commandButton action="#{tblusuMbean.verificausuario}" value="Enviar" />                              
            </h:panelGrid>  
                   
      
             </p:panel>   
                         <h:panelGroup layout="block" styleClass="erro">  
                             <h:message for="usuarionaoexiste"/>  
                         </h:panelGroup>  
      
              
        </h:form>

Meu bean

public void verificausuario() {  
            List<Tblusu> resultado = servico.buscaruserservice(getObj1().getUsunome(),getObj1().getUsusenha());           
            for (Tblusu met:resultado) {              
             System.out.println("Usuario "+met.getUsunome());  
    }   
              
              
            FacesContext facesContext = FacesContext.getCurrentInstance();  
            FacesMessage facesMessage = new FacesMessage("This is a message");  
            facesContext.addMessage("formindexlogin:usuarionaoexiste", facesMessage);  
      
            System.out.print("logado com sucesso");   
            ///ServicoUtils.redirecionaLogin("welcome.jsf");  
              
        }

no Log do Glassfish esta dando o seguinte erro :

Não foi possível encontrar o componente com a ID usuarionaoexiste na exibição.

Alguem pode me ajudar ???

9 Respostas

E

Tentei fazer dessa forma :

<h:form id="formindexlogin">  
                <p:panel style="left:100px; width:400px;height:170px;">
                    <f:facet name="header">
			  <h:outputText value="#{msg.login_titulo}" />
		     </f:facet>       
                    
                    
                        <h:panelGrid columns="2" styleClass="center-table" style="text-align:right;">                                                       
                            <h:outputText value="#{msg.login_usuario_login}:" />
                            <p:inputText id="#{msg.login_usuario_login}" value="#{tblusuMbean.obj1.usunome}" />    
                            <h:outputText value="#{msg.login_usuario_senha}:" />                            
                            <p:password 
                                        required="true" id="#{msg.login_usuario_senha}" 
                                        label="#{msg.login_usuario_senha}" 
                                        value="#{tblusuMbean.obj1.ususenha}" />

                            <p:commandButton action="#{tblusuMbean.verificausuario}" value="Enviar" />                            
        		</h:panelGrid>
                    

                </p:panel> 
                            <h:panelGroup layout="block" styleClass="erro">
                                <h:message for="usuarionaoexiste"/>
                            </h:panelGroup>

               
           </h:form>

Meu bean

public void verificausuario() {
         List<Tblusu> resultado = servico.buscaruserservice(getObj1().getUsunome(),getObj1().getUsusenha());         
         for (Tblusu met:resultado) {			
        	 System.out.println("Usuario "+met.getUsunome());
	} 
         
         
         FacesContext facesContext = FacesContext.getCurrentInstance();
         FacesMessage facesMessage = new FacesMessage("This is a message");
         facesContext.addMessage("formindexlogin:usuarionaoexiste", facesMessage);

         System.out.print("logado com sucesso"); 
         ///ServicoUtils.redirecionaLogin("welcome.jsf");
         
     }

no Log do Glassfish esta dando o seguinte erro :

Não foi possível encontrar o componente com a ID usuarionaoexiste na exibição.

C

E realmente na sua pagina não existe nenhum componenete com aquele id, ai como era de se esperar ele não consegue achar o componente…

o que voce precisa fazer é colocar na sua pagina um componente de mensagens com esse id para funcionar entendeu ?

E

O componente nao seria isso :

<h:message for="usuarionaoexiste"/>
I

no “for” do seu h:message, vc tem que apontar para o ID de outro componente, e no caso não há nenhum outro componente com esse ID.

se quiser um id para o componente h:message, tem que ser id=""

E

Tentei fazer dessa forma :

<p:panel style="left:100px; width:400px;height:170px;">
                                <h:message id ="usuarionaoexiste" for="usuarionaoexiste"/>                                 
                </p:panel> 
                
                
                
                
Bean                
         FacesContext facesContext = FacesContext.getCurrentInstance();
	  FacesMessage facesMessage = new FacesMessage("This is a message");
         facesContext.addMessage("formindexlogin:usuarionaoexiste", facesMessage);

Mas nao esta preenchendo na minha view “This is a message”

D

Amigo, qual o valor de #{msg.login_usuario_login} no componente id da tag <p:inputText>?

pelo que entendo esse valor deve ser o mesmo que o referenciado no atributo for da tag <h:message>

...
<p:inputText id="teste" value="#{tblusuMbean.obj1.usunome}" /> 
<h:message for="teste">
...
E

entao mas eu quero dar a mensagem se o Usuario/Senha Invalido, acredito que nao teria que ter esse vinculo com o <p:input

nao é ???

D

se você não quer vincular uma mensagem para um componente específico você deve usar <h:messages> e no seu código você passaria null em vez de usar o id de um componente específico:

FacesContext facesContext = FacesContext.getCurrentInstance();  
essage facesMessage = new FacesMessage("This is a message");  
facesContext.addMessage(null, facesMessage);
T

evandro_araujo:
Tentei fazer dessa forma :

<h:form id="formindexlogin">    
             <p:panel style="left:100px; width:400px;height:170px;">  
                 <f:facet name="header">  
    t;h:outputText value="#{msg.login_titulo}" />  
    </f:facet>         
                   
                   
                     <h:panelGrid columns="2" styleClass="center-table" style="text-align:right;">                                                         
                         <h:outputText value="#{msg.login_usuario_login}:" />  
                         <p:inputText id="#{msg.login_usuario_login}" value="#{tblusuMbean.obj1.usunome}" />      
                         <h:outputText value="#{msg.login_usuario_senha}:" />                              
                         <p:password   
                                     required="true" id="#{msg.login_usuario_senha}"   
                                     label="#{msg.login_usuario_senha}"   
                                     value="#{tblusuMbean.obj1.ususenha}" />  
      
                         <p:commandButton action="#{tblusuMbean.verificausuario}" value="Enviar" />                              
            </h:panelGrid>  
                   
      
             </p:panel>   
                         <h:panelGroup layout="block" styleClass="erro">  
                             <h:message for="usuarionaoexiste"/>  
                         </h:panelGroup>  
      
              
        </h:form>

Meu bean

public void verificausuario() {  
            List<Tblusu> resultado = servico.buscaruserservice(getObj1().getUsunome(),getObj1().getUsusenha());           
            for (Tblusu met:resultado) {              
             System.out.println("Usuario "+met.getUsunome());  
    }   
              
              
            FacesContext facesContext = FacesContext.getCurrentInstance();  
            FacesMessage facesMessage = new FacesMessage("This is a message");  
            facesContext.addMessage("formindexlogin:usuarionaoexiste", facesMessage);  
      
            System.out.print("logado com sucesso");   
            ///ServicoUtils.redirecionaLogin("welcome.jsf");  
              
        }

no Log do Glassfish esta dando o seguinte erro :

Não foi possível encontrar o componente com a ID usuarionaoexiste na exibição.

Alguem pode me ajudar ???

Bom dia evandro_araujo ,

Está notável sua intenção, e notável o seu erro. Como já foi dito, o atributo for é usado para referenciar a um id EXISTENTE, ou seja, de outro componente. Qual é o retorno desse método aqui: “msg.login_usuario_login” ?
Faça um método verificando a existência ou não dos parâmetros, Se sim, você retorna uma mensagem positiva, se não, obviamente ao contrário !!! Dê um id para o seu atributo <p:messages/>, que quando ouver o retorno do classe, utilizando os objetos FacesMessage e FacesContext , a etrutura saberá que a mensagem deve ser exibida no componente <p:messages/>, não havendo a necessidade de se referenciar ao componente <p:inputText/>.

Ou você poderia utilizar um componente <p:growl/> onde iria utilizar requisição ajax, utilizando o atributo “update” para atualizar o mesmo quando o retorno do método tivesse exito.
Como você esta utilizando o <p:messages/>, faça isso que eu te disse.
Se não entender, me diga que tento te explicar de uma melhor forma.

Vou te mostrar a estrutura sem implementação ok. Isso vai ficar pra você !!

public void verificausuario() {  
          
try{

      AQUI VEM A ESTRUTURA VERIFICANDO A EXISTÊNCIA OU NÃO DO USUÁRIO, OU DADOS CORRETOS, EM FIM !!!!       

     
       FacesMessage message = new FacesMessage("Usuário logado");  
       FacesContext.getCurrentInstance().addMessage(null, message); 
        
        
        }catch(Exception e){
         
        FacesMessage message = new FacesMessage("Senha ou Usuário incorreto");  
        FacesContext.getCurrentInstance().addMessage(null, message);
        } 
              
                                }

Ai está simples !! Você pode verificar se ele não existe, ou se existe mas se os dados não batem, em fim, ai já é questão de implementação, que você tem que bolar !!

Att,

Ericson de Castro

Criado 25 de janeiro de 2013
Ultima resposta 31 de jan. de 2013
Respostas 9
Participantes 5