Java 如何在spring-servlet.xml中为@RequestBody转换配置jackson对象映射器?
我想显示一个服务器端ajax数据表。为此,我需要从控制器获取数据 我的请求如下表所示:Java 如何在spring-servlet.xml中为@RequestBody转换配置jackson对象映射器?,java,spring-mvc,jackson-databind,Java,Spring Mvc,Jackson Databind,我想显示一个服务器端ajax数据表。为此,我需要从控制器获取数据 我的请求如下表所示: var form = { "order":"12r34e56e", "state":"open"} 我的控制器应该将其解析为一个对象,我可以将其发送到Web服务并从列表中的订单接收所有打开的包。接收到的列表还必须转换为JSON格式才能在表中显示 我的头看起来像 ?{%22orderNummer%22:%2212r34e56e%22}&{=1563526347735 我已成功尝试使用RequestParam
var form = { "order":"12r34e56e", "state":"open"}
我的控制器应该将其解析为一个对象,我可以将其发送到Web服务并从列表中的订单接收所有打开的包。接收到的列表还必须转换为JSON格式才能在表中显示
我的头看起来像
?{%22orderNummer%22:%2212r34e56e%22}&{=1563526347735
我已成功尝试使用RequestParam。但是我的表单包含了更多的过滤参数,比如date1、date2、Address等等。所以变量太多了。
我试着去诠释,但徒劳无功
consumes=MediaType.APPLICATION_JSON_VALUE
我没有更改表单对象类PreparedStatement,因为在没有ajax的情况下提交表单很好
在我的pom.xml中
我的ajax调用
我的JSON是有效的。我试过了
但我明白了
分析HTTP请求头时出错。在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
我想我需要在spring-servlet.xml中配置Jackson的ObjectMapper,但我不知道怎么做。我解决了自己的问题。
首先,我必须在Tomcat server.xml连接器中添加relaxedQueryChars='{}'
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedQueryChars='{}' />
接下来:Spring不允许RequestMethod.GET使用RequestBody。所以我改成了POST,它很管用。因为:
<mvc:annotation-driven />
我不必对jackson objectmapper进行任何配置。供您自行试用。。荣誉
"ajax": {
type: "GET",
url: "${pageContext.request.contextPath}/getTableData",
contentType:"application/json",
dataType:"json",
data: function(data) {
var form = { "order":"12r34e56e", "state":"open"}
return JSON.stringify(form);
}
}
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedQueryChars='{}' />
<mvc:annotation-driven />