Redirect struts2操作重定向到;“外部”;网址

Redirect struts2操作重定向到;“外部”;网址,redirect,struts2,action,httprequest,Redirect,Struts2,Action,Httprequest,我需要我的动作能够重定向到外部url地址,比如说 现在我有: <default-action-ref name="home" /> <global-results> <result name="redirect" type="redirect">${targetUrl}</result> </global-results> ${targetUrl} 如果在targetUrl中,我的操作将调用主页,并且不会重定向到google

我需要我的动作能够重定向到外部url地址,比如说

现在我有:

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

${targetUrl}
如果在targetUrl中,我的操作将调用主页,并且不会重定向到google

我在这里看到了类似的问题 但我可以看到,只有url的最后一部分被用作重定向的目的地

你能帮帮我吗


感谢

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

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

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

这将解决您的问题。 从返回重定向的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;
    }

}

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

<result name="startCheckout" type="httpheader">
    <param name="status">303</param>
    <param name="headers.location">${externalUrl}</param>
</result>

303
${externalUrl}