java - 我的 Servlet、Bean 和 JSP 之间的通信问题

标签 java jsp servlets javabeans

我很难对我的 bean 进行计算并在 JSP 文件上显示结果 当我执行代码时,出现异常:

org.apache.jasper.JasperException 包含这一行,问题所在行:<c:if test="${ !empty tax.AmountWithTax }"><c:out value="${ tax.AmountWithTax }" /></c:if>

错误消息:未找到 AmountWithTax 的属性

预先感谢您的帮助

JSP 表单源代码 SendStep1.jsp:

<form class="form-horizontal" action="../SendStep1/" name="amount-calculation-form" method="post">
<table   class="table table-striped table-hover">
  <tr>
    <td width="170"><strong>Amount Without Tax</strong></td>
    <td width="384">    <div class="col-sm-10">
    <input class="form-control" name="amount" placeholder="ex: 25000" value="" type="number"  id="amount"   maxlength="6" required>
</div></td>
    <td width="20">&nbsp;</td>
    <td width="182"><label>
      <button type="reset" class="">Cancel</button>
    </label></td>
    <td width="384">&nbsp;<label>
      <button type="submit" class="btn btn-primary">Make Calculation>></button>
    </label></td>
  </tr>
</form>
<小时/>

Servlet:SendStep1:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Tax tax = new Tax();
    tax.TaxCalculation(request);
    request.setAttribute("tax", tax);
    this.getServletContext().getRequestDispatcher( "../SendStep1.jsp" ).forward(request, response);
}
<小时/>

Bean:Tax.class

public class Tax {

    private int AmountWithTax;
    public void TaxCalculation(HttpServletRequest request) {
        int amount = Integer.parseInt(request.getParameter("amount"));

        if( amount <= 2000){
            AmountWithTax = amount + 30;
        }else if(amount <= 2500){
            AmountWithTax = amount + 60;
        }else if(amount <= 5000){
            AmountWithTax = amount + 75;
        }else if(amount <= 15000){
            AmountWithTax = amount + 150;
        }else if(amount <= 25000){
            AmountWithTax = amount + 450;
        }else if(amount <= 50000){
            AmountWithTax = amount + 750;
        }else if(amount <= 100000){
            AmountWithTax = amount + 1500;
        }else if(amount <= 250000){
            AmountWithTax = amount + 3000;
        }else if(amount <= 500000){
            AmountWithTax = amount + 5000;
        }else if(amount <= 600000){
            AmountWithTax = amount + 6000;
        }else if(amount <= 700000){
            AmountWithTax = amount + 7000;
        }else if(amount <= 800000){
            AmountWithTax = amount + 8000;
        }else if(amount <= 900000){
            AmountWithTax = amount + 9000;
        }else if(amount <= 1000000){
            AmountWithTax = amount + 10000;
        }else {
            AmountWithTax = amount + 50000;
        }
    }


    public int getAmountWithTax() {
        return AmountWithTax;
    }

    public void setAmountWithTax(int amountWithTax) {
        AmountWithTax = amountWithTax;
    }
}

最佳答案

您应该遵循 java 命名约定。尝试将 Tax 类和 JSP 中的实例变量 AmountWithTax 相应地替换为 amountWithTax 。反射在这里起作用,并且没有找到字段 AmountWithTax 的适当获取方法。

关于java - 我的 Servlet、Bean 和 JSP 之间的通信问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835840/

相关文章:

java - 在 javaFX 中创建多个屏幕

java - 如何使 JPanel 大小相对于 JFrame 大小

java - 合成方法有什么好处?

java - 在 Spring MVC 中重用模板页面

java - 用户登录流程崩溃

jsp - 从自定义源加载 JSP 页面

java - JodaTime 如何正确解析 dd-MM YYyy 到 DateTime

java - getParameterValues 有时会从隐藏输入中返回 null

sockets - 如何创建将监听特定端口并接受 TCP 连接(非 https)的 servlet

session - @SessionScoped 如何与 EJB 一起工作? CDI 是否仅适用于 Web 层?