Hi,

I'm not sure if I understood your problem but the simplest way to pass
a value from an interceptor into an action is just by calling setter

Here you have an example how *Aware interfaces work (which is a better
option than do it as you did with
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST))
https://github.com/apache/struts/blob/master/core/src/main/java/org/apache/struts2/interceptor/ServletConfigInterceptor.java#L127-L130


Regards
--
Łukasz
+ 48 606 323 122 http://www.lenart.org.pl/

śr., 2 lut 2022 o 22:14 albert kao <albertk...@gmail.com> napisał(a):
>
> My application likes to pass value from AbstractInterceptor to two
> ActionSupport classes (codes below).
> When the user presses the Back button of a browser, hasValue() return true
> for class Action1.
> When the user presses the Back button of a browser, hasValue() return null
> for class Action2.
> My log show that request.setAttribute(KEY, Boolean.TRUE); //line A are
> executed for class Action1 and Action2.
> Where is the bug?
> Is it related to type="tiles" and type="redirectAction" in struts.xml?
> Please help.
> Thanks.
>
>
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpSession;
>
> import org.apache.struts2.StrutsStatics;
> import com.opensymphony.xwork2.ActionContext;
> import com.opensymphony.xwork2.ActionInvocation;
> import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
>
>
> public class MyInterceptor extends AbstractInterceptor {
>     public static final String KEY = "KEY";
>
>     @Override
>     public String intercept(ActionInvocation invocation) throws Exception {
>         HttpServletRequest httpServletRequest = (HttpServletRequest)
> ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
>
>         final ActionContext context = invocation.getInvocationContext();
> session = context.getSession();
> HttpServletRequest request = (HttpServletRequest)
> context.get(StrutsStatics.HTTP_REQUEST);
> HttpSession httpSession = request.getSession(true);
>
>         synchronized (httpSession) {
>             httpServletRequest.setAttribute(KEY, Boolean.TRUE); //line A
>         }
>     }
> }
>
>
> import org.apache.struts2.interceptor.ApplicationAware;
> import org.apache.struts2.interceptor.RequestAware;
> import org.apache.struts2.interceptor.SessionAware;
> import org.apache.struts2.interceptor.ScopedModelDriven;
> import com.opensymphony.xwork2.ActionSupport;
> import com.opensymphony.xwork2.Preparable;
>
> public class CoreAction extends ActionSupport implements Preparable,
> SessionAware, ApplicationAware, RequestAware {
>
>     public boolean hasValue()  {
>         HttpServletRequest httpServletRequest = (HttpServletRequest)
> ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
>         return
> Boolean.TRUE.equals(httpServletRequest.getAttribute(MyInterceptor.KEY);
>     }
> }
>
> public class Action1 extends CoreAction implements
> ScopedModelDriven<Model1> {
>     //...
> }
>
> public class Action2 extends CoreAction implements
> ScopedModelDriven<Model2> {
>     //...
> }
>
>
>
> Struts version is 2.5.26.
>
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
> Virus-free.
> www.avg.com
> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to