3
回答
JFinal的getPara为什么会在遇到特殊字符时抛出非法参数异常?比如&*等
【腾讯云】学生服务器套餐10元/月 >>>   

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

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

@JFinal

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


举报
浪花s
发帖于3年前 3回/253阅
共有3个答案 最后回答: 3年前

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

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

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

--- 共有 1 条评论 ---
浪花s那我用JFinal自带的getPara试试吧,谢了 3年前 回复
顶部