Pessoal, preciso da ajuda de vcs. sou iniciante em desenvolvimento web com JSF e estou com o seguinte problema:
criei uma aplicação simples, apenas para testar a logica de funcionamento do JSF.
tenho um FORM com o botão submit, que ao ser clicado teria que chamar um determinado metodo e redireionar para a proxima pagina, mas isso não está acontecendo.
traz a seguinte mensagem de 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
vou colocar a classe, os xhtml, o xml e os jars q uso pra se alguem poder me ajudar:
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
vejam aí:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlnssi="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>TesteJSF</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>
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";
}
}
}
pagina inicial
<?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="http://java.sun.com/jsf/core">
<h:head>
<title>Teste inicial</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid>
<h:outputLabel value="Teste qualquer"/>
<h:commandButton action="#{testeBean.salvar}" value="executar"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
pagina que deveria aparecer de nome sucesso-de-repasse.xhtml
<?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="http://java.sun.com/jsf/core">
<h:head>
<title>Teste inicial</title>
</h:head>
<h:body>
<h:outputText value="JSF Sucesso"/>
</h:body>
</html>
Como você está acessando a URL?
Ps.: Utilize BBCode. Assim:
my code
Olá fabiozoroastro.
estou usando o tomcat 7 como servidor.
a pagina inicial é a index.xhtml
a URL que uso é a seguinte:
http://localhost:8080/TesteJSF/index.jsf
até aqui tudo vem, ela abre corretamente, mas qndo clico no botão pra executar o Bean ele dá o erro
[code]
[b]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 [/b][/code]
e vlw pela dica do CODE.
só uma dúvida, vc tem algum arquivo faces-config na sua aplicação?
Não, pois até onde eu sei, posso esta errado e pesso que me corrija se estiver, qndo uso anotações não precisa do arquivo faces-config.xml
tente sar o commandbutton assim
<h:commandButton actionListener="#{testeBean.salvar}" value="executar"/>
maviaelro1:
Não, pois até onde eu sei, posso esta errado e pesso que me corrija se estiver, qndo uso anotações não precisa do arquivo faces-config.xml
Nunca testei mas acho que precisa sim…
Maviaelro,
Só pra eu ter certeza que não é problema de escopo/conversação, deixe o seu managed-bean com escopo de sessão, faça o teste e nos fale o resultado.
vc está correto, não precisa do faces-config. eu perguntei pq se vc tivesse esse arquivo poderia estar causando conflito, pq pelo erro que ta dando é o seu bean que está null, como se não estivesse sendo instanciado.
faça o seguinte: tente adicionar um construtor padrão ao seu bean, dessa maneira:
public TesteBean(){
}
raf4ever:
[quote=maviaelro1]Não, pois até onde eu sei, posso esta errado e pesso que me corrija se estiver, qndo uso anotações não precisa do arquivo faces-config.xml
Nunca testei mas acho que precisa sim…[/quote]
Que eu saiba as anotações são usada no jsf 2.0 quando vc a insere no beans não existe o pq inseri-la no faces-config.xml mas tenta retirar o (name=“testeBean”) e deixar somente @ManagedBean aconselho a usar o @ViewScoped .
vamos lá!
ja coloquei assim:
@ManagedBean
@ViewScoped
public class TesteBean {
Assim
@ManagedBean(name = "testeBean")
@SessionScoped
public class TesteBean {
e dá o mesmo erro.
An Error Occurred:
javax.el.PropertyNotFoundException: /index.xhtml @13,65 action="#{testeBean.salvar}": Target Unreachable, identifier 'testeBean' resolved to null
+ Stack Trace
+ Component Tree
+ Scoped Variables
ronnytds.
coloquei o construtor vazio como vc indicou e nada tbm
Pessoal, os jars estão corretos? são esses mesmos?
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
cara troca seu web.xml
coloca assim
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
pq aqui funcionou com esse web.xml e a classe / xhtml que vc passou
Polverini,
teria algum problema eu passar meu email e vc mandar o projeto funcionando pra mim?
luxu
Abril 7, 2011, 10:20am
#16
eu axo q o pacote JSTL seu é pra versão JSF1.2 por isso o erro lá…pegue o JSTL pra versão 2.0
[quote=maviaelro1]Pessoal, os jars estão corretos? são esses mesmos?
jsf-api
jsf-impl
jstl-api-1.2
jstl-impl-1.2 [/quote]
no meu tem:
jsf-api
jsf-impl
jstl
standard
no pacote JSF2.0(criado por mim nas bibliotecas) e os demais JAR´s dentro da LIB…
passa seu email que eu mando
enviado projeto, so dezipa e abrir pelo netbeans
Pessoal, seguinte, estou usando o eclipse, e tava observando o xml do colega, que ele usa
version=“3.0”
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd ">
usando o 3.0
uso como 2.5 e a tela index aparece normal, mas qndo coloco o 3.0 ele dá um erro 404