gpt4 book ai didi

java - 错误 400 : Bad Request involving Timestamp within JSON object

转载 作者:行者123 更新时间:2023-12-01 13:10:22 26 4
gpt4 key购买 nike

我有一个 Spring 3 MVC Controller ,它有一个对象的 @ModelAttribute 参数

该对象包含许多属性,主要是字符串/数字。它有一个 java.sql.Timestamp 属性。

我通过浏览器调用此方法,将属性作为单独的查询字符串键/值对传递。当我不传递时间戳的键/值对时,一切正常,它会加载带有我所有属性的对象。

但是,一旦我尝试发送时间戳属性的值,我就会立即收到错误 400:错误请求。

我知道我必须以特定格式发送数据字符串,但我只是使用 JsonDeserializer,以便我可以使用我想要的格式解析字符串。但是当我在 JsonDeserializer 中设置断点时,它永远不会被击中。 Spring似乎只是忽略了它。我错过了什么?

一些代码:

Controller :

@RequestMapping(headers = "Accept=application/json;charset=utf-8", value = "/doSomething", method = RequestMethod.GET)
@ResponseBody
public ReturnObject doSomething(@ModelAttribute MyObject obj, HttpServletRequest request) throws Exception {
//blah blah
}

我的对象:

public class MyObject {
private Integer someNumber;
private String someString;
@JsonDeserialize(using=ShortDateDeserializer.class)
private Timestamp someTimestamp;
// getter/setters like usual....
}

短日期反序列化器:

public class ShortDateDeserializer extends JsonDeserializer<Timestamp> {

Logger logger = Logger.getLogger(ShortDateDeserializer.class);

@Override
public Timestamp deserialize(JsonParser parser, DeserializationContext ctx) throws IOException, JsonProcessingException {

try {
String rawDate = parser.getText();

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
return new Timestamp(sdf.parse(rawDate).getTime());
} catch (Exception e) {
logger.error("Failed to parse date: "+parser.getText());
throw new IOException("Failed to parse date: "+parser.getText());
}
}
}

当我调用我的服务时,仅设置数字/字符串,如下所示:

localhost/doSomething?someNumber=1&someString=xyz

工作正常。

当我还尝试设置时间戳的值时:

localhost/doSomething?someNumber=1&someString=xyz&someTimestamp=09/15/2013

我立即收到错误 400:错误的请求。

为了让 spring 在填充 MyObject 时使用我的自定义时间戳解析代码,我错过了什么?

最佳答案

使用@RequestBody而不是@ModelAttribute。

关于java - 错误 400 : Bad Request involving Timestamp within JSON object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com