3

ここに私の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にリダイレクトされるはずですが、それが得られません。「アクションのexecute()を入力中」と出力しています。これは、Action クラスに入っていることを意味します。私が何か間違ったことをしている場合は、私を修正してください。

4

1 に答える 1

8

あなたは変わるべきです

<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 ページからアクションを直接呼び出すことができます。タグの本文コンテンツは、アクションからの結果をレンダリングするために使用されます。executeResult パラメータが指定されていない限り、struts.xml でこのアクションに対して定義された結果プロセッサは無視されます。

ここで使用例を見つけることができます: http://www.mkyong.com/struts2/struts-2-action-tag-example/

おそらく、タグ内にリダイレクトされたGoogleページが表示されると思います(変更後)


編集

達成しようとしていることを正確に説明する必要があります。あなたはタグについて質問することから始めましたが、<s:action>それはあなたが必要としているものではないと確信しています (ただし、ある時点での「リダイレクト」を除けば、あなたが何を望んでいるかはまだ正確には理解していません)。

ページを開いたときにすぐにリダイレクトしたい場合は、<s:url>タグを使用して 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" />

まず、自分の目標にとらわれずに特定して説明し、次に、その目標を達成するのに役立つテクノロジーに関する情報を取得します。

于 2013-05-29T23:22:57.513 に答える