2011-04-02 92 views
0

嗨 我想测试jsf的导航规则。jsf commandButton导航javax.el.MethodNotFoundException

我一个人的bean:

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 

@ManagedBean 
@SessionScoped 
public class Person { 
    private int id; 
    private String name; 
    private int age; 

    public Person(){ 
     id = 1; 
     name = "No name!"; 
     age = 0; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public String validate(){ 
     if(this.name.equals("Evgeny")){ 
      return "success"; 
     }else{ 
      return "failure"; 
     } 
    } 
} 

我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"> 

    <navigation-rule> 
     <from-view-id>/view.xhtml</from-view-id> 
     <navigation-case> 
      <from-outcome>success</from-outcome> 
      <to-view-id>/destination.xhtml</to-view-id> 
     </navigation-case> 
     <navigation-case> 
      <from-outcome>failure</from-outcome> 
      <to-view-id>/view.xhtml</to-view-id> 
     </navigation-case> 
    </navigation-rule> 

</faces-config> 

这就是我的方式:

<!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:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 

<h:body> 
    <h:form> 
     <h:outputText>Some Text!</h:outputText> 
     Name: <h:inputText value="#{person.name}" id="inName"></h:inputText> 
      <br></br> 
     Age: <h:inputText value="#{person.age}" id="inAge"></h:inputText> 
      <br></br> 
     <h:commandButton value="OK" action="#{person.validate}"></h:commandButton> 
    </h:form> 
</h:body> 
</html> 

当我打电话person.validate我得到javax.el.MethodNotFoundException为什么会发生? 我使用MyFaces2.0.4和Tomcat 7

回答

3

保存所有文件,重建项目,重新部署webapp并重新启动服务器。

换句话说,一切都很好。你只是没有运行你认为你正在运行的代码。