Re:Ajuda Desenvolvimento Web JSF [RESOLVIDO]

24 respostas
peresjuliao

Olá Pessoal?!

Estou iniciando em meus estudos web com JSF. E não consigo resolver este problema.
Segue abaixo o meu código fonte

Classe UsuarioBean.java

package financeiro.web;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

public class UsuarioBean {
	
	private String nome;
	private String email;
	private String senha;
	private String confirmaSenha;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getConfirmaSenha() {
		return confirmaSenha;
	}
	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}
	
	public String novo() {
		return "usuario";
	}
	
	public String salvar() {
		FacesContext context = FacesContext.getCurrentInstance();
		if(!this.senha.equalsIgnoreCase(this.confirmaSenha)) {
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"Senha confirmada incorretamente", ""));
			return "usuario";
		}
		// salva o usuário
		return "sucesso";
	}
}

Arquivo Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
	id="WebApp_ID" version="2.5">
  <display-name>FinanceiroWeb</display-name>  
  <servlet>
  	<display-name>FacesServlet</display-name>
    <servlet-name>FacesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>FacesServlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
  	<param-name>javax.faces.PROJECT_STAGE</param-name>
  	<param-value>Development</param-value>
  </context-param>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>    
  </welcome-file-list>
</web-app>

Arquivo faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd" version="2.0">
    <managed-bean>
    	<managed-bean-name>usuarioBean</managed-bean-name>
    	<managed-bean-class>financeiro.web.UsuarioBean</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

</faces-config>

Fonte da página index.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core" >
<h:head>
	<title>Gerenciador Financeiro Pessoal</title>
</h:head>
<h:body>
	<h1>Gerenciador Financeiro Pessoal</h1>
	<h:form>
		<h:commandLink action="#{usuarioBean.novo}">Novo usuário</h:commandLink>
	</h:form>
</h:body>
</html>

Página usuario.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core" >
<h:head>
	<title>Cadastro de Usuários</title>
</h:head>
<h:body>
	<h1>Cadastro de Usuários</h1>
	<hr />
	<h:form>
		<h:messages />
		<h:panelGrid columns="2">
			<h:outputLabel value="Nome:" for="nome" />
			<h:inputText id="nome" label="Nome" value="#{usuarioBean.nome}" required="true" />
			<h:outputLabel value="e-Mail:" for="email" />
			<h:inputText id="email" label="e-Mail" value="#{usuarioBean.email}" />
			<h:outputLabel value="Senha:" for="senha" />
			<h:inputSecret id="senha" label="Senha" value="#{usuarioBean.senha}" required="true" />
			<h:outputLabel value="Confirmar Senha:" for="confirmarSenha" />
			<h:inputSecret id="confirmarSenha" label="Confirmar Senha" value="#{usuarioBean.confirmaSenha}"  required="true" />
			<h:outputText />
			<h:commandButton action="#{usuarioBean.salvar}" value="Salvar" />
		</h:panelGrid>
	</h:form>
	<hr />
</h:body>
</html>

Página mostraUsuario.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core" >
<h:head>
	<title>Usuário cadastrado</title>
</h:head>
<h:body>
	<h1>Usuário cadastrado</h1>
	<hr />
	Nome:    <h:outputText value="#{usuarioBean.nome}" /> <br />
	e-Mail   <h:outputLink value="mailto:#{usuarioBean.email}" >
			 <h:outputText value="#{usuarioBean.email}" />
			 </h:outputLink><br />
	Senha:   <h:outputText value="#{usuarioBean.senha}" /><br />
	<hr />
	<h:form>
		<h:commandLink action="inicio" value="inicio" />
	</h:form>
</h:body>
</html>

Quando vou criar um novo usuário digito todos os campos aparece a seguinte mensagem de erro

Para maiores informações sobre de onde tirei esses fontes. São do livro Programação Java para Web

Abraços

24 Respostas

otaviojava

Caro colega.

Acho interessante você utilizar o padrão do JEE 6.
que utiliza anotação e usa bem menos o xml.

peresjuliao

otaviojava

O problema é por causa da anotação?

L

Use Annotation

Tiburcio_Mancha

peresjuliao:
otaviojava

O problema é por causa da anotação?

Não, com annotation seu código ficará bem mais limpo,mas do jeito que vc fez também da certo!

não vi a declaração das regras de navegação no deu faces-config,deve ser isso, coloca estas configurações!

otaviojava

Como Tiburcio_Mancha não impacta.
O jee 6 é compatível com as versões antigas.
Mas nessa nova versão fica bem mais fácil o desenvolvimento e o código fica mais limpo.
De qualquer forma nós vamos te ajudar.
Faz o que o Tiburcio_Mancha falou.

J

Independente de usar jsf 2 com as anotações para o mapeamento, é interessante saber realizar as configurações por xml, pode ser util ( por exemplo um cliente que precisa de manutenção em um sistema com jsf <=1.2).
No seu caso está faltando as navigation-rules, da uma pesquisada no google sobre isso que tu encontra explicações e exemplo de como fazer, mas é bem simples.

A

muito provalvelmente o problema esta no return do seu Bean

peresjuliao

Olá, Pessoal

Consegui resolver o problema era no faces-config.xml

e justamente no

segue o complemento para o pessoal que algum dia tiver a mesma dúvida minha

<navigation-rule>
    	<from-view-id>*</from-view-id>
    	<navigation-case>
    		<from-outcome>inicio</from-outcome>
    		<to-view-id>/index.xhtml</to-view-id>
    	</navigation-case>
    	<navigation-case>
    		<from-outcome>usuario</from-outcome>
    		<to-view-id>/usuario.xhtml</to-view-id>
    	</navigation-case>
    </navigation-rule>
Tiburcio_Mancha

interessante, pq ???

otaviojava

òtimo man.
Mas mesmo com esse problema resolvido veja a versão mais atual.
Por que no jsf 2.0 vc não precisa mais configurar isso. Basta apenas você retornar o nome da página.
Por exemplo se vc quer chegar na página index.xhtml
vc precisa simplismente retonar a string “index”

maviaelro1

Pessoal, estou com o mesmo problema:
Não foi possível encontrar um caso de navegação correspondente na ID de exibição ‘/olamundo.xhtml’ para a ação ‘testeBean.salvar’ com o resultado ‘testeBean.salvar’

Estou usando anotações.
vou colocar aqui os jars que coloquei no projeto:
commons-beanutils-1.8.3
commons-collections-3.2.1
commons-digester-2.1
commons-logging-1.1.1
jsf-api
jsf-impl
jstl-api-1.2
jstl-impl-1.2

O meu é algo bem simples, só pra teste mesmo

vejam aí:
web.xml

<?xml version="1.0" encoding="UTF-8"?>


TesteJSF

FacesServlet FacesServlet javax.faces.webapp.FacesServlet 1 FacesServlet *.jsf javax.faces.PROJECT_STAGE Development index.html index.htm index.jsp

classe TesteBean
package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name=testeBean)

@RequestScoped

public class TesteBean {
private int i;
		
public int getI() {
	return i;
}
public void setI(int i) {
	this.i = i;
}

public String salvar(){
	 this.i =1;
	if(this.i == 1){

		return "sucesso-de-repasse";	
	}else{
		return "erro-de-repasse?faces-redirect=true";
	}
	
}

}

pagina inicial

<?xml version="1.0" encoding="ISO-8859-1" ?> Teste inicial

pagina que deveria aparecer de nome sucesso-de-repasse.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?> Teste inicial

e continua aparecendo a mensagem de que não conseguiu encontrar o caminho da navegação
se alguém me ajudar eu agradeço.

ronnytds

cara, no action do teu commandButton faltou colocar o testeBean.salvar dentro de #{}. o correto é #{testeBean.salvar}

maviaelro1

valeu ronnytds. realmente, me passei nisso, mas agora apareceu este erro:

An Error Occurred:
javax.el.PropertyNotFoundException: /olamundo.xhtml @13,65 action="#{testeBean.salvar}": Target Unreachable, identifier ‘testeBean’ resolved to null

  • Stack Trace
  • Component Tree
  • Scoped Variables
ronnytds

cara, esquisito acontecer esse erro, mas pra testar tenta colocar teu bean como SessionScoped e executa de novo pra ver o que acontece.

maviaelro1

cara,

continua acontecendo a mesma coisa.

coloquei meu Bean como SessionScoped, mas deu no mesmo.

Será que os jars que estou usando estão corretos?
acredito que sim, senão nem rodaria. correto?

maviaelro1

cara,

continua acontecendo a mesma coisa.

coloquei meu Bean como SessionScoped, mas deu no mesmo.

Será que os jars que estou usando estão corretos?
acredito que sim, senão nem rodaria. correto?

ramonquitane

Obrigado peresjuliao, eu estava com o mesmo problema que voce.Bem pensado deixar o complemento.

O livro em si esta faltando alguns detalhes e este é um deles.

Olá, Pessoal

Consegui resolver o problema era no faces-config.xml

e justamente no

segue o complemento para o pessoal que algum dia tiver a mesma dúvida minha

view plaincopy to clipboardprint?

<navigation-rule>  
        <from-view-id>*</from-view-id>  
        <navigation-case>  
            <from-outcome>inicio</from-outcome>  
            <to-view-id>/index.xhtml</to-view-id>  
        </navigation-case>  
        <navigation-case>  
            <from-outcome>usuario</from-outcome>  
            <to-view-id>/usuario.xhtml</to-view-id>  
        </navigation-case>  
    </navigation-rule>

Valeu

zolotareff

Olá, pessoal.

Esse livro é bom, achei algumas coisas estranhas com ICEFACES 2.0. Porém, é o único que conheço que possui componentes visuais como o woodstock(projeto descontinuado). Trabalhar com componentes prontos é bem legal, arrastá-los o layout dá muita produtividade, é por isso que muitos escolhem o asp.net, entretantanto os outros só sabem criticar.

Tudo que é novo há bugs e falta de informação. Essa aplicação do livro é bem estranha, não sei se são as Libraries ou configuração que dá “pau”.

O problema aí é o seguinte: você precisa realmente configurar dessa maneira o arquivo faces-config, do jeito que esta no livro aparece alguns erros de caminho não encontrado de ID, é apenas uma pequena adaptação:

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
    
      <navigation-rule>
    	<from-view-id>*</from-view-id> 
    	   <navigation-case>
    <from-outcome>inicio</from-outcome>
    <to-view-id>/index.xhtml</to-view-id>
    </navigation-case>
    
        <navigation-case>
    	<from-outcome>usuario</from-outcome>
    	<to-view-id>/usuario.xhtml</to-view-id>    
    </navigation-case>   
     
   
    <navigation-case>
    	<from-outcome>sucesso</from-outcome>
    	<to-view-id>/mostraUsuario.xhtml</to-view-id>    
    </navigation-case>   
    </navigation-rule>
        
     <managed-bean>  
        <managed-bean-name>usuarioBean</managed-bean-name>  
        <managed-bean-class>financeiro.web.UsuarioBean</managed-bean-class>  
        <managed-bean-scope>request</managed-bean-scope>  
    </managed-bean>  

</faces-config>

Outra coisa, percebi que você mudou o arquivo XML, não precisa, deixa do geito original, eu tinha modificado e deu pau também.

Segue essas instruções que a aplicação irá funcionar, aqui rodou legal, testei o netbeans tbm!

Felicidades.

ramonquitane

zolotareff Boa Tarde!

Meu projeto esta com este erro:

HTTP Status 404 - /FinanceiroWeb/publico/login.jsf


type Status report

message /FinanceiroWeb/publico/login.jsf

description The requested resource (/FinanceiroWeb/publico/login.jsf) is not available.


Apache Tomcat/7.0.25

Ja refiz o projeto varias vezes so que o erro persiste.O que sera?

Web xml

<?xml version="1.0" encoding="UTF-8"?> FinanceiroWeb1 index.html index.htm index.jsp default.html default.htm default.jsp Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.jsf conexaoFilter financeiro.web.filter.ConexaoHibernateFilter conexaoFilter *.jsf

hibernate.cfg

<?xml version="1.0" encoding="UTF-8"?>
<navigation-rule>  
    <from-view-id>*</from-view-id>   
       <navigation-case>  
<from-outcome>inicio</from-outcome>  
<to-view-id>/index.xhtml</to-view-id>  
</navigation-case>  
  
    <navigation-case>  
    <from-outcome>usuario</from-outcome>  
    <to-view-id>/usuario.xhtml</to-view-id>      
</navigation-case>     
   
 
<navigation-case>  
    <from-outcome>sucesso</from-outcome>  
    <to-view-id>/mostraUsuario.xhtml</to-view-id>      
</navigation-case>     
</navigation-rule>  
      
 <managed-bean>    
    <managed-bean-name>usuarioBean</managed-bean-name>    
    <managed-bean-class>financeiro.web.UsuarioBean</managed-bean-class>    
    <managed-bean-scope>request</managed-bean-scope>    
</managed-bean>

Faces-config

<?xml version="1.0" encoding="UTF-8"?>
<managed-bean>
<managed-bean-name>usuarioBean</managed-bean-name>
<managed-bean-class>financeiro.web.UsuarioBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<navigation-rule>  
    <from-view-id>*</from-view-id>  
    <navigation-case>  
        <from-outcome>inicio</from-outcome>  
        <to-view-id>/index.xhtml</to-view-id>  
    </navigation-case>  
    <navigation-case>  
        <from-outcome>usuario</from-outcome>  
        <to-view-id>/usuario.xhtml</to-view-id>  
    </navigation-case>  
</navigation-rule> 

<navigation-rule>  
    <from-view-id>/usuario.xhtml</from-view-id>  
    <navigation-case>  
        <from-outcome>sucesso</from-outcome>  
        <to-view-id>/mostraUsuario.xhtml</to-view-id>  
    </navigation-case>  
    
</navigation-rule>

meu projeto nao esta funcionando!
Preciso de sua ajuda para descobrir o que é.

Grato.

tiago_

Eu to com um problema parececido, mas eu to usando o annotations para mapear !
Quanda a senha nao bate com a senha confirmada fica tudo certo, mas quando a senha eh = a senha confirmada da o seguinte erro:

Não foi possível encontrar um caso de navegação correspondente na ID de exibição ‘/usuario.xhtml’ para a ação ‘#{usuarioBean.salvar}’ com o resultado ‘sucesso’

Vou colar o codigo aqui:

package financeiro.web;



import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
  
@ManagedBean(name="usuarioBean")
@RequestScoped

public class UsuarioBean {
	
	
	private String nome;
	private String email;
	private String senha;
	private String confirmaSenha;
	
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getConfirmaSenha() {
		return confirmaSenha;
	}
	public void setConfirmaSenha(String confirmaSenha) {
		this.confirmaSenha = confirmaSenha;
	}
	
	public String novo(){
		return "usuario";
	}
	
	
	public String salvar() {  
        FacesContext context = FacesContext.getCurrentInstance();  
        if(!this.senha.equalsIgnoreCase(this.confirmaSenha)) {  
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,  
                    "Senha confirmada incorretamente", ""));  
            return "usuario";  
        }  
        // salva o usuário  
        return "sucesso";  
    }  
	
	

}
<?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://java.sun.com/jsf/html"
	xmlns:f="htpp://java.sun.com/jsf/core">

<h:head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title>Cadastro de Usuários</title>
</h:head>  
<h:body>  
    <h1>Cadastro de Usuários</h1>  
    <hr />  
    <h:form>  
        <h:messages />  
        <h:panelGrid columns="2">  
            <h:outputLabel value="Nome:" for="nome" />  
            <h:inputText id="nome" label="Nome" value="#{usuarioBean.nome}" required="true" />  
            <h:outputLabel value="e-Mail:" for="email" />  
            <h:inputText id="email" label="e-Mail" value="#{usuarioBean.email}" />  
            <h:outputLabel value="Senha:" for="senha" />  
            <h:inputSecret id="senha" label="Senha" value="#{usuarioBean.senha}" required="true" />  
            <h:outputLabel value="Confirmar Senha:" for="confirmarSenha" />  
            <h:inputSecret id="confirmarSenha" label="Confirmar Senha" value="#{usuarioBean.confirmaSenha}"  required="true" />  
            <h:outputText />  
            <h:commandButton action="#{usuarioBean.salvar}" value="Salvar" />  
        </h:panelGrid>  
    </h:form>  
    <hr />  
</h:body>  
</html>

Nao sei mais o que fazer para resolver o problema : /

A

estou com esse mesmo problema tb
alguem poderia ajudar?

J

Algupem solucionou esta última bagaça? A última é mais parecida com a minha.

dtxk

amigo depois da uma lida aqui:

J

Jura que isso foi pra mim?

To bobo!!!

Criado 29 de dezembro de 2010
Ultima resposta 12 de set. de 2014
Respostas 24
Participantes 14