Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重定向在struts2中不起作用_Java_Jsp_Url_Redirect_Struts2 - Fatal编程技术网

Java 重定向在struts2中不起作用

Java 重定向在struts2中不起作用,java,jsp,url,redirect,struts2,Java,Jsp,Url,Redirect,Struts2,这是我的index.jsp文件: 家 以下是我的struts.xml: ,但我不明白。它正在打印“输入动作的execute()。这意味着它将在行动课上进行。如果我做错了什么,请纠正我。你应该改变 ${url} 到 ${url} 及 到 让它发挥作用 但是,即使这样做了,您的页面也不会被重定向,因为这不是标记所做的: 此标记允许开发人员通过指定操作名称和可选名称空间,直接从JSP页面调用操作。标记的主体内容用于呈现操作的结果。除非指定了ExecuteSult参数,否则strut

这是我的index.jsp文件:

以下是我的struts.xml:


,但我不明白。它正在打印“输入动作的execute()。这意味着它将在行动课上进行。如果我做错了什么,请纠正我。

你应该改变

${url}


${url}



让它发挥作用

但是,即使这样做了,您的页面也不会被重定向,因为这不是
标记所做的:

此标记允许开发人员通过指定操作名称和可选名称空间,直接从JSP页面调用操作。标记的主体内容用于呈现操作的结果。除非指定了ExecuteSult参数,否则struts.xml中为此操作定义的任何结果处理器都将被忽略

您可以在此处找到一个用法示例:

我想你可能会在你的标签中看到重定向的谷歌页面(修改后)


编辑

你应该准确地描述你想要达到的目标;您首先询问了一个关于
标记的问题,但我很确定这不是您所需要的(尽管我仍然不完全理解您想要的是什么,除了某个地方的“重定向”之外)

如果您想在打开页面时立即重定向,只需使用
标记将url装载到您的操作中,并将其放入javascript脚本中以更改位置:


location.href=“”;
(但这会很奇怪,因为如果您需要在来自另一个操作时重定向,没有理由从JSP页面传递,只需使用
redirectAction
result,而不是
redirect
result)

如果您想在按下按钮时重定向,请使用
标记:



首先确定并描述您的目标,然后获取帮助您实现目标的技术信息。

为什么默认软件包中包含UrlAction?正如Struts2 XML操作映射中定义的。它会有区别吗?如果它真的在默认名称空间中,则不会有区别。。。但是如果它在一个命名的包中,那么它就不会。开发人员很少不将类放在包中。你通常会创建很多,组织它们是个好主意。但是即使有了更改,响应已经写入,并且使用
executesult
仍然不应该重定向,不?是的,可能;我真的从来没有用过那个标签。。。我很想知道,但还不足以测试:))我按照你说的做了尝试。但它仍然没有重定向。但我发现一件有趣的事情,如果我直接在浏览器中粘贴“getUrl.action”,那么它就是重定向,但当我运行索引时就不会了。jsp@pranaygodha请稍等文档加载后再调用操作。@AndreaLigios
标记对我有用。非常感谢。我的目标是点击index.jsp,它将调用action类,从action类中我可以生成任何URl,在那里我想要重定向。所以我在action类中使用了重定向。
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";
  }

}