开发者社区> 问答> 正文

Jfinal 拦截器中修改getParaMap中的参数值无效 : 配置报错 

您好,最近刚开始使用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?

展开
收起
kun坤 2020-06-03 15:47:20 804 0
1 条回答
写回答
取消 提交回答
  •   
    <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很好用,大神厉害啊! 
    
    2020-06-05 13:32:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载