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

Spring Boot接收前端POST JSON参数时time、view字段始终为0问题排查

问题根因
  • 核心问题出在Code实体类的注解配置:你在time和view两个字段上加了@JsonIgnore,这个注解会让JSON处理框架Jackson同时跳过这两个字段的**反序列化(接收前端参数赋值)和序列化(接口返回时输出字段)**流程。也就是说前端传的这两个值根本没被注入到newCode对象里,而int基础类型的默认值就是0,所以不管输入什么,打印出来都是0。
  • 额外隐患:前端通过DOM获取的input输入值默认是字符串类型,虽然Jackson默认支持字符串转数字,但如果输入非数字内容会直接报类型转换错误。
修复步骤

1. 调整实体类注解逻辑

你加@JsonIgnore的需求应该是接口返回给前端时不暴露这两个字段,不需要在字段层面全局加忽略,改成只在返回(序列化)阶段忽略即可,两种改法选一种就行:

改法1:注解加在get方法上

删掉字段上的@JsonIgnore,只在对应的getter方法上加注解,setter方法保持正常,这样反序列化赋值时能正常调用set方法,返回时get方法被忽略就不会输出字段:

@Column(name = "left_time")
private int time;

@Column(name = "left_view")
private int view;

// 其余字段、构造方法保持不变

@JsonIgnore
public int getTime() {
    return time;
}

public void setTime(int time) {
    this.time = time;
}

@JsonIgnore
public int getView() {
    return view;
}

public void setView(int view) {
    this.view = view;
}

改法2:用JsonProperty控制访问级别(更简洁)

直接在字段上用@JsonProperty指定访问权限为只写,效果和上面完全一致,代码更整洁:

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "left_time")
private int time;

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
@Column(name = "left_view")
private int view;

2. 前端传参做类型转换

修改JS中组装参数的逻辑,把输入的字符串转成整数,同时做空值兜底,避免类型转换异常:

let object = {
    "code": document.getElementById("code_snippet").value,
    "time": parseInt(document.getElementById("time_restriction").value) || 0,
    "view": parseInt(document.getElementById("view_restriction").value) || 0
};

改完重启服务,再调用接口就能正常获取到time和view的输入值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:18:16