我需要我的操作才能重定向到外部网址,让我们说例如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的最后一部分被用作重定向的目的地。
你能帮我吗?感谢
答案 0 :(得分:0)
要从拦截器重定向到特定操作,我执行了以下操作:
response.sendRedirect("specificAction.action");
return null;
在这种情况下无需全局结果。
答案 1 :(得分: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;
}
}
答案 2 :(得分:0)
您可以使用 Http Header 结果类型执行此操作。这是可行的,因为到浏览器的重定向指令只是一个状态代码加上“位置”标题。
<result name="startCheckout" type="httpheader">
<param name="status">303</param>
<param name="headers.location">${externalUrl}</param>
</result>