当前位置: 代码迷 >> Java Web开发 >> JSF的javax.faces.el.MethodNotFoundException
  详细解决方案

JSF的javax.faces.el.MethodNotFoundException

热度:1443   发布时间:2008-01-17 09:57:39.0
JSF的javax.faces.el.MethodNotFoundException
初学遇到奇怪的问题,怎么改都没用,求教大家了!calculator.jsp页面要求输入两个数,然后选择一个方法,然后就跳转到result.jsp页面显示结果。但是点击方法后总会显示这个异常。
calculator.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Calculate Page</title>
</head>
<body>
<h1>JSF Calculator Example</h1><br/>
<f:view>
    <h:form>
        <table>
            <tr>
                <td><b>First Number:</b></td>
                <td><h:inputText value="#{cal.firstNum }" /></td>
            </tr>
            <tr>
                <td><b>Second Number:</b></td>
                <td><h:inputText value="#{cal.secondNum }" /></td>
            </tr>
        </table>
        <h:commandButton value="+" action="#{cal.add }" />
        <h:commandButton value="-" action="#{cal.minus }" />
        <h:commandButton value="*" action="#{cal.multiply }" />
        <h:commandButton value="/" action="#{cal.divide }" />
    </h:form>
    <h:outputLink value="index.faces" ><h:outputText value="abc" /></h:outputLink>
</f:view>
</body>
</html>
result.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Calculate Result Page</title>
</head>
<body>
<h1>Calculator Result Page</h1><br/>
<f:view>
    First Number:<h:outputText value="#{cal.firstNum }" /><br/>
    Second Number:<h:outputText value="#{cal.secondNum }" /><br/>
    Result:<h:outputText value="#{cal.result }" />
    
</f:view>
</body>
</html>
然后是两个类:
Calculator.java:
package src;

public class Calculator {

    public double add (double a, double b) {
        return a + b;
    }

    public double minus (double a, double b) {
        return a - b;
    }

    public double multiply (double a, double b) {
        return a * b;
    }
    
    public double divide(double a, double b) {
        if(b != 0) {
            return a / b;
        } else {
            return Double.MAX_VALUE;
        }
    }
}
CalculatorController.java:
package src;

public class CalculatorController {
    
    private double firstNum = 0;
    private double secondNum = 0;
    private double result = 0;
    private Calculator calculator = new Calculator();
    
    public String add() {
        result = calculator.add(firstNum, secondNum);
        return "complete";
    }
    
    public String minus() {
        result = calculator.minus(firstNum, secondNum);
        return "complete";
    }
    
    public String multiply() {
        result = calculator.multiply(firstNum, secondNum);
        return "complete";
    }
    
    public String divide() {
        result = calculator.divide(firstNum, secondNum);
        return "complete";
    }
    
    public Calculator getCalculator() {
        return calculator;
    }
    public void setCalculator(Calculator calculator) {
        this.calculator = calculator;
    }
    public double getFirstNum() {
        return firstNum;
    }
    public void setFirstNum(double firstNum) {
        this.firstNum = firstNum;
    }
    public double getResult() {
        return result;
    }
    public void setResult(double result) {
        this.result = result;
    }
    public double getSecondNum() {
        return secondNum;
    }
    public void setSecondNum(double secondNum) {
        this.secondNum = secondNum;
    }
    
}
然后是配置文件faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
    <navigation-rule>
        <navigation-case>
            <from-outcome>complete</from-outcome>
            <to-view-id>/result.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    
    <managed-bean>
        <managed-bean-name>cal</managed-bean-name>
        <managed-bean-class>src.CalculatorController</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    
    <application>
        <locale-config>
            <default-locale>en</default-locale>
        </locale-config>
    </application>
        
</faces-config>
为什么总提示找不到那几个方法?跟方法的返回类型有关系吗?谢谢!
搜索更多相关主题的帖子: JSF  faces  quot  javax  uri  

----------------解决方案--------------------------------------------------------
可能是引用的某些包的版本过低,其内部实现上还没有提供LZ需要调用的这些API方法。有些开发包对其依赖的包的版本有最低限制的。
----------------解决方案--------------------------------------------------------
我试过另外一个例子,就是验证用户名和密码的,方法还是我自己定义的,而且调用也像这个例子一样,可以运行,就不知道为什么这个不行...
----------------解决方案--------------------------------------------------------
顶个
----------------解决方案--------------------------------------------------------
沉第二页了
----------------解决方案--------------------------------------------------------
晕死啊~~~~~~~~~~~~
原来#{cal.add}这里,add和}之间不能有空格啊!!!
试了好久终于弄好了!!!
这个印象深刻了!!!
----------------解决方案--------------------------------------------------------
这个是方法名称错误的异常,找找代码中的EL表达式的方法名吧
----------------解决方案--------------------------------------------------------
另外,我现在也在使用JSF,版主有时间的话可以指教一下啊。我觉得JSF现在越来越像ASP.NET了,很多方面都像,不一样的地方就是ASP.NET有个用起来顺手的IDE罢了,很多事情都会帮你搞定。而JSF还比较手动化一点。不知道版主有没有同感
----------------解决方案--------------------------------------------------------
不知道版主用的什么IDE?介绍一下,我现在用的eclipse3.2虽然支持JSF,但总觉得用着不太爽,尤其是前台界面开发方面尤为不爽。
----------------解决方案--------------------------------------------------------
我也用的Eclipse3.2,还行吧,就是没有找到本好教材,只有一个在线教程,只有结合点以前做的东西自己编,呵呵,用习惯了也不错感觉
----------------解决方案--------------------------------------------------------
  相关解决方案