在struts中的action方法中设置url参数

Coo*_*ans 0 java url-routing struts-1

我想在转发到action方法的另一个动作之前添加一个URL参数.虽然HttpServletRequest有一个getParameter()方法,但它没有setParameter()方法.我知道setAttribute()在那里,但我需要它成为URL的一部分(比如?something = something&some2 = some2).我知道我可以使用过滤器来做到这一点,但这对于这项任务来说太过分了.

基本上我们有一个外部管理的过滤器,当设置该参数时,它将改变页面上的某些内容.假设页面的颜色将作为URL参数的一部分传递.当该参数出现时,servlet过滤器将其拾取并更改该页面的颜色.我知道这是一种非常奇怪的做法,但这就是他们在这里设置的方式.

我知道如何通过将URL参数添加到动作URL(即"/someAction.do?color=red"),使用基于java脚本的表单提交它.但是对于某些操作,它实际上在代码中执行了action.forward("action_name").对于那些我想知道该怎么做的人.

有没有人知道如何在struts 1.2中做到这一点?

laz*_*laz 5

简短的回答是,这是不可能的.请求参数应该来自HTTP请求.您可以使用a ServletFilter和a的组合来伪装添加它们,HttpServletRequestWrapper但这不是Struts的组合.根据您要完成的任务,可能会有更好的解决方案.想描述一下吗?

更新

通过您添加的其他详细信息,我认为您可以尝试使用它来查看它是否满足您的需求:

import org.apache.struts.action.ActionRedirect;
...
ActionForward forward = action.forward("action_name");
ActionRedirect redirect = new ActionRedirect(forward);
redirect.addParameter("color", "red");
return redirect;
Run Code Online (Sandbox Code Playgroud)