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 控制器 = 日期修改的主要内容,如果未能解决你的问题,请参考以下文章

对 HTTPS 的 Ajax 调用失败

cors解决ajax跨域

Ajax JQuery 到 Spring @RequestBody?我如何传递数据?

对 Spring Boot 控制器的 Ajax 调用以重定向视图

jQuery ajax调用返回URL并加载到框架或div中

jQuery中Ajax+Spring MVC实现跨域请求