pra*_*dha 3 java url redirect jsp 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>
Run Code Online (Sandbox Code Playgroud)
这是我的struts.xml:
<struts>
<action name="getUrl" class="UrlAction">
<result name="redirect" type="redirect">${url}</result>
</action>
</struts>
Run Code Online (Sandbox Code Playgroud)
这是我的动作类:
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";
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我运行index.jsp时,它应该将我重定向到https://www.google.com,但我没有得到它.正在打印"输入执行的执行()".这意味着它将进入Action类.如果我做错了,请纠正我.
你应该改变
<result name="redirect" type="redirect">${url}</result>
Run Code Online (Sandbox Code Playgroud)
至
<result name="redirect" type="redirect">
<param name="location">${url}</param>
</result>
Run Code Online (Sandbox Code Playgroud)
和
<s:action name="getUrl"></s:action>
Run Code Online (Sandbox Code Playgroud)
至
<s:action name="getUrl" executeResults="true"></s:action>
Run Code Online (Sandbox Code Playgroud)
使其有效;
但是,即使这样做之后,你会不会有你的页面重定向,因为那是不是在什么<s:action>
标签呢,根据文档:
此标记使开发人员可以通过指定操作名称和可选命名空间直接从JSP页面调用操作.标记的正文内容用于呈现Action的结果.除非指定了executeResult参数,否则将忽略在struts.xml中为此操作定义的任何结果处理器.
您可以在此处找到一个使用示例:http://www.mkyong.com/struts2/struts-2-action-tag-example/
我想你可能会在你的标签内看到重定向的谷歌页面(修改后)
编辑
你应该准确地描述你想要达到的目标; 你开始问一个关于<s:action>
标签的问题,但我很确定这不是你需要的(尽管我还没有完全理解你想要的东西,除了某个地方的"重定向")
如果您想在打开页面时立即重定向,只需使用<s:url>
tag将url挂载到您的操作,并将其放入更改位置的javascript脚本中:
<script>
location.href = "<s:url action="getUrl.action" />";
</script>
Run Code Online (Sandbox Code Playgroud)
(但这很奇怪,因为如果你需要在来自另一个动作时重定向,没有理由从JSP页面传递,只使用redirectAction
结果而不是redirect
结果)
如果您想在按下按钮时重定向,请使用<s:submit>
标记:
<s:submit action="getUrl.action" value="press here to redirect" />
Run Code Online (Sandbox Code Playgroud)
首先确定和描述不可知你的目标,然后获得有关帮助你做到这一点的技术信息.
归档时间: |
|
查看次数: |
4632 次 |
最近记录: |