JSP和JavaBeans,为什么我不能使用bean方法的返回值?

问题描述 投票:0回答:1

我正在学习 JSP 和 javabean。我编写了一个简单的网络应用程序来计算贷款偿还额。应用程序使用用户输入(来自表单)正确设置 bean 的字段。该 bean 还包含一个方法calculatePayment(),由于某种原因我无法从JSP 页面调用该方法。我在网上搜索并审查了代码,但没有成功。欢迎任何帮助。

服务器日志报告:

org.apache.jasper.JasperException:在第 [56] 行处理 [/index.jsp] 时发生异常

53:         <table>
54:             <tr>
55:                 <td>Annual payment is</td>
56:                 <td>${loanBean.calculatePayment()}</td>
57:             </tr>
58:         </table>
59:     </body>

和:

根本原因

jakarta.el.ELException:java.lang.NullPointerException:无法调用“String.trim()”,因为“in”为空

以下是代码片段:

LoanBean 中的calculatePayment()方法:

public String calculatePayment() {
    double P = Double.parseDouble(loanAmount);
    double r = Double.parseDouble(rate);
    double t = Double.parseDouble(term);
        
    double A = P*(Math.pow(1 + r, t));
        
    DecimalFormat df = new DecimalFormat("#.##");
    String num_string = df.format(A);
    return num_string;    
}

和我的 JSP 页面 - 实例化 bean 并指定要设置的字段:

<%@page contentType="text/html" pageEncoding="UTF-8" session="true"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Klausen_Chapter5_Problem1_LoanCalculator</title>
    </head>
    <body>
        <jsp:useBean id="loanBean"  scope="session"  class="loancalculator.beans.LoanBean"/>

        <jsp:setProperty name="loanBean" property="arrangementFee"/>
        <jsp:setProperty name="loanBean" property="loanAmount"/>
        <jsp:setProperty name="loanBean" property="rate"/>
        <jsp:setProperty name="loanBean" property="term"/>
        <h1>Loan Calculation</h1>
        <form name="form1"  method="post">
            <table>
                <tr>
                    <td>Arrangement fee :</td>
                    <td><input type="text"  name="arrangementFee" value="${loanBean.arrangementFee}"/>
                </tr>
                <tr>
                    <td>Enter loan amount :</td>
                    <td><input type="text"  name="loanAmount"  value="${loanBean.loanAmount}"</td>
                </tr>
                                     -----   more rows and input elements ----

                <tr><td></td>
                    <td><input type="submit"  value="Clear"/>
                        <input type="submit"  value="Calculate"/>
                    </td>
                </tr>
            </table>
        </form>
        
        <br><br>
        <table>
            <tr>
                <td>Annual payment is</td>
                <td>${loanBean.calculatePayment()}</td>
            </tr>
        </table>
    </body>
</html>

我仔细查看了代码并在网上搜索答案但无济于事。

jsp web javabeans
1个回答
0
投票

我想我已经找到答案了:

这是因为,传递给Double.parseDouble(String string)的字符串loanAmount、term和rate都是null,但我不明白为什么它们是类变量并且已经被设置了

© www.soinside.com 2019 - 2024. All rights reserved.