需求:一个功能在执行时发现缺少数据,跳转到一个设置界面,让用户设置参数,保存设置后,自动跳转再把原来没有执行完的功能再执行完成。请问这种功能怎么实现呢?

解决方案 »

  1.   

    cookie或session或request保存下值。
      

  2.   

    我把request对象放在session中:
    request.getSession().setAttribute("req", request);
    然后再forward到另一个页面让用户设置属性....
    保存属性的action中,保存后,从session中取出request:
    HttpServletRequest requestOld=(HttpServletRequest)request.getSession().getAttribute("req");
    但它并不是原来的request对象了,而是当前的request,即requestOld就是request 。试验失败,换种方式:如果第一步只在session放URL,后面取出URL做重定向是可以的,但是如果有parameter就没办法了。request只有getParameter()但没有setParameter(),因此这种方式会丢失parameter,不完整啊!
      

  3.   

    用logic:match判断 
    如果某个值为空  则跳到某个页面
      

  4.   

    建议用session或request是什么意思?我就是两个都用了但不行!
    用logic:match判断是什么意思?我的问题是,请求一个URL时,如果条件不够,例如未登录,则跳转到处理界面例如登录页,让用户登录,登录完成后直接再去自动执行前面的请求(前面请求的URL,parameters等都要保留)我尝试把第一个请求的request对象完整保存到session中(request对象包含了请求的所有信息),但是失败;把第一个请求的URL,parameters分别保存到session中,在跳转处理完成后,能够取出,但由于request对象没有setParameter()方法,无法赋值,也就无法执行前面的请求。现在我找不到办法了,请大家指点,非常感谢!
      

  5.   

    struts的actionForm可以的,你把ActionForm 保存 就可以了,页面自动填充
      

  6.   

    我不是想页面自动填充啊,是这样:
    1、用户填写一个表单,提交到savaform;
    2、savaform保存表单需要用户名,如判断用户未登录,(此处应有某机制保存该savaform请求包括所有表单数据)重定向或跳转到登录界面,填写用户名密码并提交;
    3、验证通过后,取出保存的第一步的savaform请求,执行表单保存动作,并返回表单提交后的界面。
      

  7.   

    可以做到滴.
      在你判断到没有登录时,saveform表单先不提交,用AJAX的请求弹出一个对话框来进行登录,登录成功后当前的对话框就关闭,继续往下执行
     如果不用对话框的话,那么可以这样,还是在判断到没有登录时,提交一个.do的请求的同时,把你在当前页面已经操作的数据保存到一个实体Bean中去,然后一并把实体Bean传送到.do请求对应的Action中,Action中操作登录,同时把这个实体Bean存在一个request的范围内,登录成功后,把这个实体Bean的数据取出放入相应的地方即可....
      

  8.   

    谢谢大家,但还是有问题:
    1、登录是我举的一个例子,我的目的是遇到缺少用户首选项参数时,就跳转到参数设定页,只有提交后才知道是否缺少,所以Ajax方式不能用;
    2、我没有用struts,也不了解struts,也没有用实体Bean,每个请求的处理都是用request.getParameter()直接获取表单值再赋给对象并写库,我希望做一种通用的跳转,不能每个不同请求单独写实体Bean去处理(每个请求的实体Bean都是不同的吧,我的系统也没有统一采用实体Bean),并且希望这个功能是透明的,即每个不同的请求的作者无须考虑这个问题,他们只需要请求用户首选项参数,取到正常执行,取不到则跳转到设置界面设置后再跳转到原来的请求继续执行,而无须做任何特定处理。因此我很苦脑!
      

  9.   

    也可以做到的吧..你在后台执行的时候,根据request.getParameter()得到的值,存储到Map的键值对中去,然后把这个Map存在request范围内,当然是要在你插库成功后才存request中,然后跳转到页面的时候,再从request的范围内取这个Map的对象即可吧...
      

  10.   

    可是谁来取呢?
    跳转出来设置用户首选项或者登录后,再跳转到原来的请求,这是框架实现的,也是我们要解决的问题。每一个具体请求是其他开发者在做,他们不知道有这个跳转,他们只是取参数而已(取不到自动跳转并设置后再跳回来执行),开发者写的每个具体请求只知道从request.getParemeter()中取值,不知道存在一个Map也无从处理了
      

  11.   

    我明白了:可以遍历请求中的参数,附在URL后面,即组成get方式的提交URL,然后放在session中,当设置完成后,从session中取出,重定向到这个地址即可,这样就会带着参数了,尽管过长的参数会有问题,但大部分情况下是可以的了。