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?
[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>
ò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.