Jquery Ajax 调用 + Spring boot 控制器 = 日期修改
Posted
技术标签:
【中文标题】Jquery Ajax 调用 + Spring boot 控制器 = 日期修改【英文标题】:Jquery Ajax call + Spring boot controler = date modification 【发布时间】:2021-05-31 06:34:53 【问题描述】:我有这个 Ajax 调用:
$.ajax(
type : 'GET',
headers :
Accept : "application/json; charset=utf-8",
"Content-Type" : "application/json; charset=utf-8"
,
url : 'prises/histo',
success : function(result)
google.charts.load('current',
'packages' : [ 'corechart', 'table' ]
);
google.charts.setOnLoadCallback(function()
drawHisto(result);
);
,
error: function (xhr, ajaxOptions, thrownError)
alert(xhr.message);
);
调用这个 Spring Boot 控制器:
@RestController
@RequestMapping(value = "/prises")
public class PriseController
private static final Logger log = LoggerFactory.getLogger(PriseController.class);
@Autowired
private PriseHistoRepository priseHistoRepository;
@GetMapping(value="histo")
@ResponseBody
List<PriseHisto> reportAllHisto()
return priseHistoRepository.findAll ();
要获取此实体的列表:
public class PriseHisto
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Integer version;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy/MM/dd", locale = "fr_FR")
private Date dateDonnees;
@NotNull
private String operateurInfra;
@NotNull
private String codeOperateurInfra;
@NotNull
private String statut;
private String ocDernierRacc;
@NumberFormat
@NotNull
private int nbrPrises;
我的 dateDonnees
字段有问题:调试时数据库和控制器中的所有值都是一个月的第一天(例如 2020 年 12 月 1 日),但我得到了上个月的最后一天AJAX 调用(例如 2020 年 11 月 30 日)。
在将 json 转换为 javascript 对象期间,这看起来像是一个时区问题,但我尝试了许多不同的设置,但无法解决。你有什么想法吗?
【问题讨论】:
【参考方案1】:在application.properties
中配置默认时区
spring.jackson.time-zone=Europe/Paris
或者在JsonFormat
中设置时区
@JsonFormat(... pattern="yyyy/MM/dd", timezone="Europe/Paris")
【讨论】:
以上是关于Jquery Ajax 调用 + Spring boot 控制器 = 日期修改的主要内容,如果未能解决你的问题,请参考以下文章
Ajax JQuery 到 Spring @RequestBody?我如何传递数据?