Hi:
In my application I first use the chain result type for one
action:"loginSub".
If login success,user should be taken to the manager page.
This is the core content in struts.xml:
<package name="default" extends="struts-default" namespace="/">
.....
<action name="loginSub" class="com.test.action.LoginAction">
<result name="success" type="chain">
<param name="actionName">manager</param>
<param name="namespace">/secure</param>
</result>
<result name="input">/jsp/login.jsp</result>
<result name="error">/jsp/login.jsp</result>
</action>
</package>
<package name="sec" extends="struts-default" namespace="/secure">
<action name="manager">
<result>/jsp/secure/manager.jsp</result>
<result name="input" type="chain">
<param name="actionName">loginPage</param>
<param name="namespace">/</param>
</result>
</action>
</package>
It works,when user login,the page will show the content in the
/jsp/secure/manager.jsp.
However the value in the browser address bar is also something like:
http://localhost:8080/Test/loginSub.action.
So once user refresh this page,it will result in a relogin.
After read the struts2 tutorial,I found the result type of
"redirectAction",it will change the value of the Browser address bar.
I change the "loginSub" action:
<action name="loginSub" class="com.test.action.LoginAction">
<..... the authentication interceptor>...
<result name="success" type="redirectAction">
<param name="actionName">manager</param>
<param name="namespace">/secure</param>
</result>
<result name="input">/jsp/login.jsp</result>
<result name="error">/jsp/login.jsp</result>
</action>
Now after login,the browser address bar will change to :
*http://localhost:8080/Test/secure/manager.action*
Now no matter how frequently user refresh the page,it will not cause a
relogin.
However I found that I can not get some properties in the LoginAction.
I have a struts tag in the manager.jsp:
*<s:property value="userBean.username">*
Now using the redirectAction result type,I have no idea to get this value.
Any ideas?
BWT:
1)what's the difference between "Dispatcher Result","Redirect
Result","Redirect Action Result" and "Chain Result"?
I read the contents at "....struts.apache.org/2.2.1/docs/result-types.html",but
I am not exactly sure its meaning.
2)My action "manager" is a authentication required action,so I add a
authentication interceptor for them.
But how about user enter the url directly like this:
*
http://localhost:8080/Test/jsp/secure/manager.jsp?*
If so ,I do not think the interceptor will work.
How do you guys slove this problem?