You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaWeb项目JSP间传递price变量返回null问题解决

问题根因

request作用域的属性仅在单次服务端转发的请求生命周期内有效。你在Availability.java中把price存入request转发到display.jsp的流程是通的,但display.jsp里的<a href="seat.jsp">是客户端发起的全新GET请求,上一轮请求里存的所有属性会被完全销毁,所以seat.jsp里拿不到值返回null。
另外你现有JS代码里写的document.getElementById("p")取到的是整个DOM元素对象,不是价格数值,就算DOM存在也无法正常参与金额计算。

修复方案

1. 修改display.jsp,跳转时携带price参数

最简便的方式是直接把price拼在跳转链接的查询参数里,把原有a标签替换为:

<center><a href="seat.jsp?price=${price}" class="button"> <span>View Seats </span></a></center>

如果不希望参数暴露在URL中,也可以在display.jsp头部把值存入session作用域:

<% session.setAttribute("price", request.getAttribute("price")); %>

注意:session存值使用完成后要及时移除,避免不同订单间的值串扰

2. 修改seat.jsp,正确读取价格数值

你现在的跳转逻辑是打开全新页面,display.jsp的DOM节点不会被带到seat.jsp,所以不能通过getElementById取值,要直接从传参里拿纯数字值。
如果用URL传参的方式,在seat.jsp的JS代码开头新增参数解析逻辑,替换原有错误的DOM取值:

var firstSeatLabel = 1;
// 从URL查询参数中解析price并转为数字类型
const urlSearchParams = new URLSearchParams(window.location.search);
const unitPrice = Number(urlSearchParams.get('price'));

$(document).ready(function() {
    var $cart = $('#selected-seats'),
        $counter = $('#counter'),
        $total = $('#total'),
        sc = $('#seat-map').seatCharts({
            map: [
                'ff_ff',
                'ff_ff',
                'ee_ee',
                'ee_ee',
                'ee___',
                'ee_ee',
                'ee_ee',
                'ee_ee',
                'eeeee',
            ],
            seats: {
                f: {
                    price : unitPrice, // 替换原有document.getElementById("p")
                },
                e: {
                    price   : unitPrice, // 替换原有document.getElementById("p")
                },
            },
            // naming、legend、点击事件等其余原有代码保持不变即可

如果用session存值的方式,直接通过EL表达式取值即可,省去URL解析步骤:

const unitPrice = Number(${price});

后续同样替换seats配置里的DOM取值代码即可。


内容的提问来源于stack exchange,提问作者Belle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:24:28