添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
暗恋学妹的投影仪  ·  GitHub - ...·  9 月前    · 
个性的树叶  ·  myF5·  1 年前    · 

经常遇到前台使用get方式查询,传递复杂对象到后台的情况,需要使用到中括号,如果直接使用中括号,后台tomcat服务器不识别,需要前台进行转码 为 %5B %5D,如果使用浏览器请求,会导致浏览器再次将%转码,为了解决该问题,可以配置tomcat识别不转码的中括号,配置如下

1. 如果是使用springboot方式启动,可以在application.yml增加配置

server.tomcat.relaxed-query-chars: [,]

2. 有的版本使用1不生效,可以增加配置类

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;
@Component
public class EmbeddedTomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers(connector -> connector.setAttribute("relaxedQueryChars", "[]"));

3. 外部tomcat启动,修改server.xml文件,connector增加对应的属性 relaxedQueryChars="[]"

    <Connector connectionTimeout="20000" port="8080" relaxedQueryChars="[]" protocol="HTTP/1.1" redirectPort="8443"/>

4.前台使用get传递复杂对象到后台

如果是数组中包含简单类型,例如 字段fieldA,可以使用多个字段传值,如果是对象中的属性,可以使用[],如果是数组中的对象,可以使用 对象[index].field,具体如下图