您好,最近刚开始使用jfinal,使用ajax做请求的时候对中文内容用encodeURI做了两次编码,然后想通过定义一个拦截器来进行解码,但是拦截器中明明参数都已经解码为中文了,但是为何在拦截器后面的action中取到的值依旧是未解码的值,谢谢~拦截器内部的代码我是这样写的
public void intercept(ActionInvocation ai) { Controller controller = ai.getController();
for (String[] parames : controller.getParaMap().values()) {
for (int i = 0; i < parames.length; i++) {
//使用工具两次解码
parames[i] = StringUtil.stringDecoder(parames[i]);
}
}
ai.invoke();
}</pre>
后来,也试过直接从request取parameter来改,但是还是无效,因此我想问下是否jfinal中无法直接通过拦截器来修改request中的parameter?
<pre class="brush:java; toolbar: true; auto-links: false;">controller.setAttr("parames", parames);
ai.invoke();</pre>
###### ParaMap 是只读的,通过 controller.getParaMap().values() 得到的 String[] parames 是新建的对象,对其进行改变并不影响 ParaMap 中的数据。
为何不解码后直接用变量传递给 controller? 也可在写个工具类在 controller 现转现用 ######囧~是接触,打错字了######恩,多谢回复,最近刚解除jfinal,以前使用struts的时候习惯这样做了,我试试直接传变量。jfinal很好用,大神厉害啊!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。