哪位对过滤器的原理理解的比较透的仁兄帮帮忙啊!我想实现的功能是这样的:页面1  传递3个参数给action2  ,action2接到参数后做相应的处理,处理完以后将参数再传给action3,传的过程中我想将原来的页面1传过来的3个参数只传两个给action3(也就是说action2在传参数给action3的时候过滤掉了一个参数)。虽然用传统的过滤器也可以实现,但我觉得应该不需要那么烦就可以实现吧!

解决方案 »

  1.   

    呵呵,
    为了使action可重用性变强,我在每个action里都设置了cases变量,用它来根据得到的值来选择不同的转向,
    但也就是这样出现了以上了问题,
    页面1传给action2的时候,参数中有cases变量和id变量,
    但action2传给action3的时候,我要用前面的id的值,但同时也得到了cases的值。这个值不是我想要的,我要把cases这个值在action2传给action3的过程中修改一下,修改成action3可以可以接受的值才行。
    所以就提出了这个问题!
    谢谢你帮忙解答啊
      

  2.   

    那你可以用setAttribute()方法来实现呀,用选择语句判断下
      

  3.   

    request中获得参数的方式有两种,一种是getAttribute()和setAttribute(),另外一种是getParameter()后一种主要是用来从url中取得参数,我的参数都是用url传的,用第一种方法根本就得不到url传过来得参数值啊!呵呵,要是有setParameter()方法就好了,我直接就解决它
      

  4.   

    这样,你中间页面getParameter一下,然后用个hidden接住,再中间页面再提交,提交前处理一下就好了,就能刷新这个属性了
      

  5.   

    setParameter 其实内置了,就看你想到没有了
      

  6.   

    如果你的action是想重复使用的话,那就没有必要设定cases的值。每个action都有自己的特定的功能。把action里面的cases去掉,也许会避免这个问题。
      

  7.   

    能不能将setParameter的用法说说啊,用中间页面接也可以。但我联想到servlet的过滤器就可以实现我所说的功能,我就是想问问可不可以在我的类里面通过代码实现象servlet的过滤器一样的功能啊
      

  8.   

    其实知道的解决方法就有好几种了,我就是想问问有没有可以象servlet的过滤器那样实现的方法
      

  9.   

    我知道的解决方法:
    1、将每个action中cases都以不同的命名(这个用了,会感觉很乱)2、在action用new forward(“。。”,true)实现,(这个是我知道的比较好的解决方法,但问题也是比较明显的)3、干脆不要加cases变量了(这个用了,只能给自己找更大的麻烦)4、添加一个过滤器,在action2转到action3之前调用一下
      

  10.   

    我之所以重用action就是因为有些action的相似性太大了,他们唯一的区别就是转向的jsp页面不同比如:前台的显示所有信息的list,后台的显示所有信息的list,他们的jsp页面可能允许做的操作不同,但他们都是list操作,取得的数据都是一样的
      

  11.   

    setParameter有这个方法吗?
    我想的是:
       在xx-config.xml中配置如下
       <action  type=""
       scope="request" parameter="method" path="/action2">
    <forward name="action3" path="/action3" />
       </action>
       <action  type=""
       scope="request" parameter="method" path="/action3">
       </action>
       action2的代码包含:
        String id = request.getParameter("id");
        String cases = request.getParameter("cases");
        //对cases处理完后,给cases赋于action3需要的值或者直接给个cases3值
        String cases3 = .....//代码省略
        request.setAttribute("id", id);
        request.setAttribute("cases",cases3);
        mapping.findForward("action3");   action3的代码包含:
         String id = (String)request.getAttribute("id");
         String cases = request.getParameter("cases");
         if((cases == null)||(cases.equals("")))
             cases = (String)request.getAttribute("cases");
         这样就可以 得到 cases的值了。if的作用是便于楼主说的每个action都有cases变量的重用,其实如要要严谨的话,应该加上个if从url取不着值时,就从属性里取。
      

  12.   

    谢谢谢谢!!!!!!!tanchuyue()