Pessoal,
Tenho um “HelloWord” em JSF. A primeira página contém um caixa de texto onde deve ser digitado o nome do usuário e um botão.
Após o prenchimento do formulário, ao se clicar no botão “Go”, deveria aparecer uma outra página, saudando o usuário pelo seu nome.
Acontece, porém, que a EL utilizada para se chamar o método do bean, está causando o seguinte erro :
"SEVERE: org.apache.jasper.el.JspMethodNotFoundException: /hello.jsp(15,5) '#{HelloBean.resposta}' Method not found: beans.HelloBean@c70b0d.resposta()"
Seguem abaixo os códigos-fonte envolvidos
hello.jsp
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<f:view>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hello Form</title>
</head>
<body>
<h:form>
<h:panelGrid columns='2'>
<h:outputText value='Name:'/>
<h:inputText value='#{HelloBean.name}'/>
<h:commandButton type='submit' value='Go' action='#{HelloBean.resposta}'/>
</h:panelGrid>
</h:form>
</body>
</html>
</f:view>
HelloBean.java
package beans;
public class HelloBean {
private String name="";
private String resposta="sucesso";
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setResposta(String resposta) {
this.resposta = resposta;
}
public String getResposta() {
return resposta;
}
}
faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer
Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>HelloBean</managed-bean-name>
<managed-bean-class>beans.HelloBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/hello.jsp</from-view-id>
<navigation-case>
<from-outcome>sucesso</from-outcome>
<to-view-id>/mensagem.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
web.xml
?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
Teste</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
Pelo que já li sobre JSF, a linha
...
<h:commandButton type='submit' value='Go' action='#{HelloBean.resposta}'/>
...
da página “hello.jsp” não deveria chamar implicitamente o método “getResposta()” de HelloBean ?
Tentei assim e não deu certo. Aparece o erro supracitado.
Se eu substituir a propriedade “resposta” de HelloBean, pela chamada direta do método getResposta, da seguinte forma
...
<h:commandButton type='submit' value='Go' action='#{HelloBean.getResposta}'/>
...
aparece o erro “The metod getResposta not defined in a named space…”.
Será que alguém poderia me ajudar ?
Agradece,
Max Carvalho