In Struts 2, @ResultPath
annotation is used to control where Struts 2 will find the the stored results or JSP pages. By default, it will find the result pages from the “WEB-INF/content/
” folder.
No idea why the Struts 2 annotation set the “WEB-INF/content/
” as default folder, but most applications will not put the result pages in this “WEB-INF/content/
” folder. It’s just a Struts 2 convention not a standard folder structure. I rather Struts 2 put the root path as the default folder.
@ResultPath
example
1. Default ResultPath
A login action class, set to “/User
” namespace, and redirect to the “pages/login.jsp
” pages.
P.S Assume the
Struts2Example
is your context servlet name
@Namespace("/User")
@Result(name="success",location="pages/login.jsp")
public class LoginAction extends ActionSupport{
}
Access it
http://localhost:8080/Struts2Example/User/login.action
Struts 2 will find the “login.jsp
” result page from the default location
/Struts2Example/WEB-INF/content/User/pages/login.jsp
2. Custom ResultPath
If your JSP result pages are store in other location, you are allow to change it with @ResultPath
annotation.
@Namespace("/User")
@ResultPath(value="/")
@Result(name="success",location="pages/login.jsp")
public class LoginAction extends ActionSupport{
}
Access it again
http://localhost:8080/Struts2Example/User/login.action
Now the Struts 2 will find the “login.jsp
” result page from different location
/Struts2Example/User/pages/login.jsp
Global @ResultPath
The @ResultPath
is only apply to the class level. To apply it globally, you can configure it in the struts.xml
file.
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.convention.result.path" value="/"/>
</struts>