我正在学习 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>
我仔细查看了代码并在网上搜索答案但无济于事。
我想我已经找到答案了:
这是因为,传递给Double.parseDouble(String string)的字符串loanAmount、term和rate都是null,但我不明白为什么它们是类变量并且已经被设置了