jsf commandButton navigation javax.el.MethodNotFou

2019-09-04 12:28发布

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

标签: jsf el
1条回答
太酷不给撩
2楼-- · 2019-09-04 13:07

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.

查看更多
登录 后发表回答