[英]Redirect is not working in struts2
这是我的index.jsp文件:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>HOME</title>
</head>
<body>
<s:action name="getUrl"></s:action>
</body>
</html>
这是我的struts.xml:
<struts>
<action name="getUrl" class="UrlAction">
<result name="redirect" type="redirect">${url}</result>
</action>
</struts>
这是我的动作类:
public class UrlAction extends ActionSupport {
private String url;
public void setUrl(String url) {
this.url = url;
}
public String getUrl(){
return url;
}
public String execute() throws Exception {
System.out.println("Entering execute() of Action");
url = "https://www.google.com/";
return "redirect";
}
}
因此,当我运行index.jsp时,它应该将我重定向到https://www.google.com ,但我没有得到它。 正在打印“输入执行的执行()”。 这意味着它将进入Action类。 如果我做错了,请纠正我。
你应该改变
<result name="redirect" type="redirect">${url}</result>
至
<result name="redirect" type="redirect">
<param name="location">${url}</param>
</result>
和
<s:action name="getUrl"></s:action>
至
<s:action name="getUrl" executeResults="true"></s:action>
使其有效;
但是,即使这样做,你也不会重定向你的页面,因为这不是 <s:action>
标签所做的, 根据文档 :
此标记使开发人员可以通过指定操作名称和可选命名空间直接从JSP页面调用操作。 标记的正文内容用于呈现Action的结果。 除非指定了executeResult参数,否则将忽略在struts.xml中为此操作定义的任何结果处理器。
您可以在此处找到一个使用示例: http : //www.mkyong.com/struts2/struts-2-action-tag-example/
我想你可能会在你的标签内看到重定向的谷歌页面(修改后)
编辑
你应该准确地描述你想要达到的目标; 你开始问一个关于<s:action>
标签的问题,但我很确定这不是你所需要的(虽然我还没有完全理解你想要的东西,除了某个地方某个地方的“重定向” )
如果您想在打开页面时立即重定向,只需使用<s:url>
标签为您的操作安装网址,并将其放入更改位置的javascript脚本中:
<script>
location.href = "<s:url action="getUrl.action" />";
</script>
(但这很奇怪,因为如果你需要在来自另一个动作时重定向,没有理由从JSP页面传递,只需使用redirectAction
结果而不是redirect
结果)
如果您想在按下按钮时重定向,请使用<s:submit>
标记:
<s:submit action="getUrl.action" value="press here to redirect" />
首先识别和不可知描述你的目标 ,然后获得有关帮助你做到这一点的技术信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.