0

我需要我的操作才能重定向到外部 url 地址,例如http://google.com

现在我有:

<default-action-ref name="home" />
<global-results>
  <result name="redirect" type="redirect">${targetUrl}</result>
</global-results>

如果在 targetUrl 我有http://google.com我的操作将调用主页,它不会重定向到谷歌。

我在这里看到了类似的问题 How to do dynamic URL redirects in Struts 2? 但我可以看到只有 url 的最后一部分被用作重定向的目的地。

你能帮我么?

谢谢

4

3 回答 3

0

要从拦截器重定向到特定操作,我执行了以下操作:

response.sendRedirect("specificAction.action");
return null;

在这种情况下不需要全局结果。

于 2012-10-11T10:20:48.713 回答
0

您可以通过使用Http Header结果类型来做到这一点。这将起作用,因为到浏览器的重定向指令只是一个状态代码加上“位置”标题。

<result name="startCheckout" type="httpheader">
    <param name="status">303</param>
    <param name="headers.location">${externalUrl}</param>
</result>
于 2021-02-18T20:08:48.143 回答
0

这将解决您的问题。从您返回重定向的 Action 类中,targetUrl 应该是该类的成员变量,并且应该具有公共 getter 和 setter。

public class YourAction extends ActionSupport {
    private String targetUrl;

    public String execute() {
         return "redirect";
    }

    public String getTargetUrl() {
        return targetUrl;
    }

    public void setTargetUrl(String targetUrl) {
        this.targetUrl = targetUrl;
    }

}
于 2017-05-12T10:18:48.713 回答