【问题标题】:Struts 2 extension changed, redirect when external link .actionStruts 2 扩展更改,外部链接时重定向 .action
【发布时间】:2017-03-21 03:03:07
【问题描述】:

使用下面的 struts.xml 设置,将操作扩展从 .action 更改为 .html 是成功的。

<constant name="struts.action.extension" value="html"/>

但是,来自谷歌搜索结果的旧链接或其他外部链接仍然指向.action url,点击时总是重定向到找不到页面错误。 无论如何我可以将那些.action url 重定向到最新的.html 链接吗?

【问题讨论】:

  • 您可以将两者都放在配置中。看看这个Struts2 .action extension causing CSS, JavaScript and Struts Dojo to break
  • 感谢您的评论。我现在通过添加一个拦截器来解决它,它将扩展 .action 替换为 .html 并重定向它。
  • @elfwine 可以为拦截器添加代码吗?
  • @RomanC 抱歉回复晚了,我会把代码贴在下面的答案部分。

标签: java struts2


【解决方案1】:

这里是将 .action url 替换为 .html 的拦截器的代码。 不要忘记在 struts.xml 中声明添加的拦截器。 我希望它对寻找它的其他人有所帮助。 ;)

@Override
public String intercept(ActionInvocation actioninvocation) throws Exception {
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();
    StringBuffer url = request.getRequestURL();
    if(url != null && url.indexOf(".action") > 0) {
        String fullUrl = url.toString().replace(".action", ".html");
        String queryString = request.getQueryString();
        fullUrl += (queryString == null ? "" : ("?" + queryString));
        // return new url with .html
        response.sendRedirect(fullUrl);
    }
    return actioninvocation.invoke();
}

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 2014-07-16
    • 2011-12-01
    • 2012-03-23
    • 2013-04-01
    • 2016-03-10
    • 2018-05-02
    • 1970-01-01
    相关资源
    最近更新 更多