Re:Ajuda Desenvolvimento Web JSF [RESOLVIDO]

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

Caro colega.

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

otaviojava

O problema é por causa da anotação?

Use Annotation

[quote=peresjuliao]otaviojava

O problema é por causa da anotação?[/quote]

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!

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.

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.

muito provalvelmente o problema esta no return do seu Bean

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>

interessante, pq ???

ò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”

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.

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

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

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

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?

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?

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

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.

1 curtida

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.