jsf commandButton navigation javax.el.MethodNotFou

2019-09-04 12:19发布

问题:

Hi I'm trying to test jsf's navigation rules.

My Person 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";
        }
    }
}

My 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>

And that's my form:

<!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>

When I try to call person.validate I get javax.el.MethodNotFoundException Why that happens? I'm using MyFaces2.0.4 and Tomcat 7

回答1:

Save all files, rebuild the project, redeploy the webapp and restart your server.

In other words, everything looks fine. You are just not running the code you think you're running.



标签: jsf el