// ... 处理数据完成。
处理数据时放在session里

解决方案 »

  1.   

    处理数据时放在session里,不好吧,我觉得session都是应该放一些长期保留的东西
    在session里面存放这些临时参数,一定要记得清除,不然越积越多就完蛋了。
    request倒是可以存以下,但是只针对forward,redirect就没办法了。搂主的问题我也想问很久了....
      

  2.   

    public ActionForward execute(ActionMapping actionMapping,
                                   ActionForm actionForm,
                                   HttpServletRequest httpServletRequest,
                                   HttpServletResponse httpServletResponse) {    // ... 处理数据
        if(actionMapping.getScope().equals("request")){
          httpServletRequest.setAttribute("keyword","software");
        }else{
          HttpSession session=httpServletRequest.getSession();
          session.setAttribute("keyword","software");
        }    // ... 处理数据完成。
        return mapping.findForward("success");  }
      

  3.   

    你可这样,准行:
    return mapping.findForward("listSomething.do?keyword=software")
      

  4.   

    像你这样的需求,不能把参数放到REQUEST里,因为两次跳转。第一个办法是将参数放到SESSION里。第二个办法是:如果你一定要在STRUTS-CONFIG里写,那么这样写
    <forward name="ShowListPage" path="/do/PageAction?param1=value"/>
      

  5.   

    你可以用session进行传值,这样就可以了!
      

  6.   

    这样就行。
    return mapping.findForward("listSomething.do?keyword="+softwarevalue)
      

  7.   

    return new ActionForward("/error.jsp?errorInfo=" + value, false);
      

  8.   

    可以用session也可以用httpServletRequest.setAttribute
    然后再下个action中用xxx.getAttribute()
      

  9.   

    return mapping.findForward("listSomething.do?keyword="+softwarevalue)
      

  10.   

    如果
    return mapping.findForward("listSomething.do?keyword="+softwarevalue)
    这样行就不用那么烦了不太同意BillyW(阿弥陀佛)
    第二个办法是
    <forward name="ShowListPage" path="/do/PageAction?param1=value"/>
    那个path是不能动态改变的第一个方法更偏向于jeoky(jeoky)的做法:
    if(actionMapping.getScope().equals("request")){
          httpServletRequest.setAttribute("keyword","software");
        }else{
          HttpSession session=httpServletRequest.getSession();
          session.setAttribute("keyword","software");
        }
    最好就是封装一下,写成这样
    存:
    ActionSaver.setObjectToScope(Object obj,String name, String scope);
    取:
    Object ActionSaver.getObjectFromScope(String name);决定了,就这样做吧
      

  11.   

    如果两个action用的是同一个ActionForm,那么只要在第一个action中改变ActionForm的值就行啦!否则的话,在每一个action中用request.setAttribute(?,?),在第二个action中用request.setAttribute(?,?)就行啦!(第二个方法还没试过呢)
      

  12.   

    我的解决办法:String keyword = ... // 获取keyword。
    return new ActionForward("listSomething.do?keyword="+keyword);经测试完全可用。1,临时数据不应放入session。
    2,用request.setAttribute("keyword", keyword)可复用性降低了。例如:我需要在界面上放置几个菜单:软件(listSomething.do?keyword=software)、硬件(listSomething.do?keyword=hardware)、服务(listSomething.do?keyword=service),如果用attribute,显然不能满足上述要求。因此只能用parameter。
    3,各位说的mapping.findForward("listSomething.do?keyword="+keyword),我没有尝试过,私下以为这是不可行的。mapping只是一个表示基于Digester的配置项对象,难道还能对URL进行分析,知道哪里是servlet部分,哪里是parameter部分?谢谢各位帮助!
      

  13.   

    明白了
    return mapping.findForward("listSomething.do?keyword="+softwarevalue)
    这是不行的,我证实return new ActionForward("listSomething.do?keyword="+keyword);
    这是可以的混在一起了。