JFinal的getPara为什么会在遇到特殊字符时抛出非法参数异常?比如&*等

浪花s 发布于 2015/10/27 08:40
阅读 318
收藏 0

JFinal的getPara为什么会在遇到特殊字符时抛出非法参数异常?比如&*等。

什么样的特殊字符会异常,什么样的不会异常?

@JFinal

——找到问题了,是自己程序的错误。


加载中
0
浪花s
浪花s

引用来自“JFinal”的评论

   特殊字符在 url 的哪部分? 是在 actionKey 之中还是在 urlPara 之中,还是在 queryString 之中? 给个具体的示例。另外,具体的异常信息是什么,这个对推断错误非常重要。 

现在看来只要输入“%”就出错,其他没有发现,出错信息:

java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "&^"

at java.net.URLDecoder.decode(URLDecoder.java:192)
at com.sjyr.hh.common.BaseController.getPara(BaseController.java:84)
at com.sjyr.hh.resume.ResumeController.save(ResumeController.java:74)
浪花s
浪花s
回复 @JFinal : 是的,不好意思,弄错了,谢谢了!
JFinal
JFinal
这个 getPara 出错是在 BaseController.java 的 84 行,有一个 URLDecoder.decode(...) 方法出现错误,这个在 jfinal 中是没有这行代码的,你用的 jfinal 是否是自行修改过的版本? 去掉这个 decode 方法试试,通常中仍对 http GET 请求才有可能需要 decode 与 encode
0
JFinal
JFinal
   特殊字符在 url 的哪部分? 是在 actionKey 之中还是在 urlPara 之中,还是在 queryString 之中? 给个具体的示例。另外,具体的异常信息是什么,这个对推断错误非常重要。 
浪花s
浪花s
回复 @sxgkwei : 是post的
sxgkwei
sxgkwei
回复 @浪花s : form改成post方式提交试试呢?
JFinal
JFinal
回复 @浪花s : 具体异常信息是什么? getPara(name) 是可以接受&* 这些字符的,除非你使用 getParaToInt(name) 类型转换时出错
浪花s
浪花s
在form表单的input中填写的
0
sxgkwei
sxgkwei

at com.sjyr.hh.common.BaseController.getPara(BaseController.java:84)

这个东西,为什么要URLDecoder.decode呢?奇怪,就是不用任何框架,就纯粹的jsp提交form表单,然后后台servlet接收信息,也不需要对接收到的信息进行URL解码,一样能得到各种&%之类的自己拼接url会导致数据传输错误的特殊字符吧?一般get容易出问题,但也不一定必定会出问题,大多数情况下,哪怕你是get方式提交上去,不用url解码直接取,也是对的吧。

浪花s
浪花s
那我用JFinal自带的getPara试试吧,谢了
返回顶部
顶部