I have a website that has public and protected areas. It is setup using Struts 2 (2.5.30) and the Convention Plugin (2.5.30).
In one of my actions, I am trying to redirect from the public (/pub/enrollmentAction) to another action in the protected area (/prot/CompleteEnrollmentAction) using the Results Annotation.
When the redirect is performed, it prepends the /pub to the resulting URL. ie /pub/prot/complete-enrollment. It should be /prot/complete-enrollment.
The EnrollmentAction is
@Action(results = { @Result(name = "success", location = "/prot/complete-enrollment", type = "redirectAction") }, interceptorRefs = { @InterceptorRef("BasicStack") })
public class Enrollment extends ActionSupport {
@Override
public String execute() throws Exception {
return "success";
}
I have tried putting in the @namespace annotation in each of the classes, but no luck.
I have tried putting the result into the struts.xml, but it did not resolve correctly.
I can manually hit the redirected URL if I type it in.
Since you use a Convention plugin you need to know how configuration is created by convention. The plugin has also its own configuration and if it was changed then it might affect your code.
You have used a result configuration incorrectly. There should be a
redirectresult type if you want to use alocationattribute. There's no such attribute in theredirectActionresult type.If you want to use
redirectActionresult type then