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

UI输入审批备注保存时approveRemarks传入null的技术问题求助

问题排查与解决方案

你遇到的UI输入审批备注后,approveRemarks参数传入为null的问题,可从以下几个方向排查并修复:


1. HTTP请求方法不匹配

当前控制器使用RequestMethod.GET处理保存操作,但GET请求通常用于查询数据,不适合提交表单内容(表单数据会放在URL中,长度受限且不安全)。若UI通过POST方式提交数据,控制器将无法获取参数。

修复:
将控制器的请求方法改为POST:

@RequestMapping(value = "/saveRiskRuleApproveNew", method = RequestMethod.POST, produces = "application/json")

同时确保UI端的表单或AJAX请求使用POST方法提交。


2. 参数名称不匹配

UI输入框的name属性必须与控制器参数名approveRemarks完全一致(大小写敏感)。若UI端使用了类似approveremarks或remark的名称,Spring将无法绑定参数值。

检查:

  • HTML表单输入框:确认name="approveRemarks"
  • AJAX请求:确认数据键名为approveRemarks
    // 示例AJAX请求
    $.ajax({
      url: "/saveRiskRuleApproveNew",
      method: "POST",
      data: {
        status: "approve",
        ruleId: "xxx",
        approveRemarks: $("#remarksInput").val(), // 键名必须匹配
        riskInstruction: "xxx"
      }
    });
    

3. 缺失@RequestParam注解

当前控制器仅给status添加了@RequestParam,其他参数未显式声明。Spring对未加注解的String参数默认视为可选,若参数未传入会直接赋值为null,且无错误提示。

修复:
给所有参数添加@RequestParam并设置required=true,强制校验参数是否存在:

public Map<String, String> saveRiskRuleApproveNew(
    @RequestParam(required = true) String status,
    @RequestParam(required = true) String ruleId,
    @RequestParam(required = true) String approveRemarks,
    @RequestParam(required = true) String riskInstruction,
    HttpSession session
) {
    // 原有逻辑
}

若参数未传入,Spring会直接返回400错误,快速定位问题根源。


4. 检查网络请求是否携带参数

通过浏览器开发者工具(F12 → 网络标签),执行保存操作后查看请求详情:

  • POST请求:检查「表单数据」中是否存在approveRemarks及对应值
  • GET请求:检查URL查询参数中是否包含approveRemarks

若参数未出现在请求中,说明UI端存在代码问题(如输入框未关联到表单、JS逻辑未正确获取输入值等)。


5. 修复SQL注入漏洞(附加优化)

当前DAO层使用字符串拼接生成SQL,存在严重的SQL注入风险,且若approveRemarks为null会将数据库字段设置为字符串'null'而非null值。

修复:
使用参数化查询替代字符串拼接:

// 以approve分支为例
Query updatequery = session.createNativeQuery(
    "UPDATE CBEC_GST.SCRTY_RISK_RULE SET APPROVAL_STATUS = :approvalStatus, APRV_REMARKS = :approveRemarks, RISK_RULE_INST = :riskInstruction, APPROVED_BY = :ssoId WHERE UI_RULE_ID = :ruleId"
);
updatequery.setParameter("approvalStatus", "APPROVED");
updatequery.setParameter("approveRemarks", approveRemarks);
updatequery.setParameter("riskInstruction", riskInstruction);
updatequery.setParameter("ssoId", userBean.getSsoId());
updatequery.setParameter("ruleId", ruleId);
updatequery.executeUpdate();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:05:33