Sometimes there is a need to redirect from one action to another, but you do not know the exact URL or that the destination URL requires parameters that are only known at run-time.
Struts 2 offers an easy solution for that problem.
Parameters in action result definitions
Code Block | ||||
---|---|---|---|---|
| ||||
<struts> ... <package name="somePackage" namespace="/myNamespace" extends="struts-default"> <action name="myAction" class="com.project.MyAction"> <result name="success" type="redirectAction">otherAction?id=${id}</result> <result name="back" type="redirect">${redirectURL}</result> </action> <action name="otherAction" class="com.project.MyOtherAction"> ... </action> </package> ... </struts> |
The only requirement is to declare the necessary properties in your action, in this case com.project.MyAction
should define properties id
and redirectURL
with standard accessor methods.
Code Block |
---|
public class MyAction extends ActionSupport { private int id; private String redirectURL; ... public String execute() { ... if (someCondition) { this.redirectURL = "/the/target/page.action"; return "back"; } this.id = 123; return SUCCESS; } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getRedirectURL() { return this.redirectURL; } public void setRedirectURL(String redirectURL) { this.redirectURL= redirectURL; } ... } |
In the above code if it returns SUCCESS
then the browser will be forwarded to
/<app-prefix>/myNamespace/otherAction.action?id=123