JFinal 3.5 请求参数有百分号(%)问题

Jfinal是屏蔽百分号参数吗?发起请求的时候返回400.

Controller代码:

blob.png

正常请求:

blob.png

控制台输出:

blob.png

参数带百分号请求:

blob.png

blob.png

控制台也没有任何输出!

不知道是哪里的原因,求解!!!

2019-04-01 18:29:44 【更新】

blob.png

blob.png

评论区

iyiluo

2019-04-01 12:01

encodeURIComponent('%广')

MUSICKING

2019-04-01 17:05

@iyiluo 这个编码是代码里面的吗?请求到不了controller那里

iyiluo

2019-04-01 17:16

@MUSICKING 这是前端的js方法

iyiluo

2019-04-01 17:20

/test?name=%25%E5%B9%BF

JFinal

2019-04-01 17:32

jfinal 没有屏蔽百分号参数,如果用的是 jfinal undertow, 升级到最新版本试一下,最新版本默认配置了 url 支持更多字符类型

JFinal

2019-04-01 17:33

如果没在使用 jfinal undertow,那就在 jfinal 之外找找原因, jfinal 肯定是没有干预过这件事的

MUSICKING

2019-04-01 18:33

@JFinal 感谢波哥解答,经过测试,升级undertow后和用jetty测试都是一样的,应该是浏览器本身不会对%号进行编码,所以跟其他汉字编码后结合到一起出问题了。试过 @iyiluo 的方式可以正常请求。

MUSICKING

2019-04-01 18:33

@iyiluo 感谢,测试可以正常请求

MUSICKING

2019-04-01 18:35

jetty server 会把异常打印出来,比较人性化!

JFinal

2019-04-01 21:04

@MUSICKING jfinal undertow 也会打印异常,注意要配置好 log4j.properties , 在 jfinal demo 中直接获取该配置

MUSICKING

2019-04-02 10:37

@JFinal 好的,感谢~

小剑魔

2019-10-24 17:59

如果是非maven项目,传递参数出现%,未使用 jfinal undertow,如何解决问题

JFinal

2019-10-24 18:23

@小剑魔 测试了一下 jetty 也不支持参数中出现 %,这个在 jfinal 层面是完全没有干预过的,也就是说请求到达 jetty、undertow、tomcat 这一层的时候就已经出问题了

当然,确切的说不是不支持百分号,例如参数出现 %20 是支持的,例如:
http://localhost:8000?key=%20

因为 %20 会被转码成空格

url 中百分号都会被转码,如果数据不正确无法正确转码就会抛异常

说到底,这本质就是一个参数值是否能正确转码的问题

小剑魔

2019-10-25 10:39

@JFinal 谢谢,问题已解决,参数中多出空格值,去掉即可,关于转码问题我再研究一下

热门反馈

扫码入社