簡體   English   中英

重定向在struts2中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM