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

Spring-MVC中Post请求异常?订单添加功能问题排查问询

订单添加Post请求失败的排查与修复

以下是导致你PostMapping无法正确处理请求的几个关键问题及修复方案:


1. 表单缺少必要输入字段

你的orders.html中添加订单的表单是空的,没有提供与控制器@RequestParam匹配的输入控件,提交时无参数传递给后端,控制器无法获取orderDate和orderStatus。

修复代码(更新orders.html的form部分):

<div class="modal-body">
    <form th:action="@{/addOrder}" method="post">
        <div class="mb-3">
            <label for="orderDate" class="form-label">订单日期</label>
            <input type="date" class="form-control" id="orderDate" name="orderDate" required>
        </div>
        <div class="mb-3">
            <label for="orderStatus" class="form-label">订单状态</label>
            <input type="text" class="form-control" id="orderStatus" name="orderStatus" required>
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
            <button type="submit" class="btn btn-primary">提交订单</button>
        </div>
    </form>
</div>

2. 日期参数绑定格式问题

控制器直接用Date接收orderDate参数,Spring无法自动解析前端传递的日期字符串,会导致参数绑定失败。

修复代码(更新ControllerUser的addOrder方法):

@PostMapping("/addOrder")
public String addOrder(@RequestParam("orderDate") @DateTimeFormat(pattern = "yyyy-MM-dd") Date orderDate,
                       @RequestParam("orderStatus") String orderStatus) {
    Order order = new Order();
    order.setDate(orderDate);
    order.setStatus(orderStatus);
    oDAO.addOrder(order);
    
    // 重定向到订单列表页面,确保刷新最新数据
    return "redirect:/user/orders";
}

注:请根据你实际的订单列表GetMapping路径调整redirect:/user/orders中的路径。

3. 控制器依赖注入缺失

ControllerUser的构造函数未添加@Autowired注解,Spring无法自动注入JdbcOrderDAO实例,会触发空指针异常。

修复代码(更新ControllerUser的构造函数):

@Autowired
public ControllerUser(JdbcOrderDAO oDAO) {
    this.oDAO = oDAO;
}

4. Bootstrap模态框属性不兼容

你引入的是Bootstrap 5,但使用了Bootstrap 4的data-toggle和data-dismiss属性,会导致模态框无法正常触发或关闭,间接影响表单提交流程。

修复代码(更新orders.html的模态框相关按钮):

<!-- 打开模态框的按钮 -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addOrderModal">
    Add new order
</button>

<!-- 模态框关闭按钮 -->
<button type="button" class="btn btn-secondary close" data-bs-dismiss="modal">&times;</button>

5. 表单提交后未刷新订单列表

直接返回"user/orders"仅渲染视图,不会重新调用获取订单列表的接口,新添加的订单不会显示。改为重定向到订单列表的GetMapping路径,确保重新加载数据。


额外检查点

  • 确认数据库indent表的indent_date字段类型为DATE或兼容类型,indent_status为字符串类型(如VARCHAR)。
  • 查看Spring Boot控制台日志,检查是否有参数绑定失败、SQL执行错误等异常信息,辅助定位问题。

内容的提问来源于stack exchange,提问作者JohnEdwards-8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:40:28