gpt4 book ai didi

struts2 - 如何将数据从Interceptor传递到URL和JSP?

转载 作者:行者123 更新时间:2023-12-02 16:59:13 24 4
gpt4 key购买 nike

我有一个验证拦截器来检查用户是否登录。如果没有,它将重定向到登录页面,并使用查询字符串参数“url”指示引荐来源网址。我尝试使用“actionInvocal.getInvocalContext().getParameters()”将值传递到重定向 URL,但没有成功。

有人可以建议我做错了什么吗?非常感谢。

拦截器代码:

public String intercept(ActionInvocation actionInvocation) throws Exception {
Map session = actionInvocation.getInvocationContext().getSession();
Map params = actionInvocation.getInvocationContext().getParameters();

String user = (String) session.get(Constants.KEY_USER);

boolean isAuthenticated = (null!=user);

if (!isAuthenticated) {
params.put("backUrl", "http://www.some_url.com/");
return Action.LOGIN;
}
else {
return actionInvocation.invoke();
}
}

struts.xml 部分

<global-results>
<result name="login" type="redirect">/login?url=${backUrl}</result>

最佳答案

检查 struts.xml 文件中的拦截器顺序; params 拦截器应该放在登录拦截器之前:

 <interceptor-stack name="defaultLoginStack">
...
<interceptor-ref name="params" />
<interceptor-ref name="login" />
...
</interceptor-stack>

这是一个 example

获取查询字符串的另一种方法是从属性javax.servlet.forward.query_string:

 String queryString = (String) actionInvocation.getRequest().
getAttribute("javax.servlet.forward.query_string");

关于struts2 - 如何将数据从Interceptor传递到URL和JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com