3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

redirectActionでリクエストパラメータを含める方法

Posted at

RedirectActionの設定方法

1つのActionクラスから別のActionクラスへリダイレクトする方法として、resultの形にredirectActionがあります。以下に設定例を示します。

@Namespace("/")
@Results({
	@Result(name = ActionSupport.SUCCESS,
			type = "redirectAction",
			params = {
				  "actionName" , "otherAction"
			}
	),
})
public class redirectAction extends ActionSupport {
	@Action("redirection")
	public String sampleRedirect() throws Exception {
		return SUCCESS;
	}
}

これにより、/redirection をリクエストすると、/otherAction へリダイレクトします。

RedirectActionの特徴

リダイレクトなので、以下の特徴があります。

  • リダイレクト元のActionとリダイレクト先のActionとではリクエストパラメータを共有しません。
  • ブラウザに表示されるURLは、リダイレクト先のURLになります。

動的にURLも指定できる

Struts2の特徴として、設定値に変数を設定できます。
これはアノテーションでの設定でも同じです。

@Namespace("/")
@Results({
	@Result(name = ActionSupport.SUCCESS,
			type = "redirectAction",
			params = {
				  "actionName" , "%{actionName}"
				  "namespace" , "%{namespace}"
			}
	),
})
public class redirectAction extends ActionSupport {
	@Action("redirection")
	public String sampleRedirect() throws Exception {
		return SUCCESS;
	}

	private String actionName;
	public String getActionName() {
		return actionName;
	}
	private String namespace;
	public String getNamespace() {
		return namespace;
	}
}

リダイレクト先にリクエストパラメータを引き継ぐ方法

Actionアノテーションのparamsに、追加するパラメータ名と値の設定もできます。
もちろん変数も可能です。次の例は、リダイレクト先のリクエストパラメータに対して、storeValの名前でActionクラスにあるstoreValの値を含める例です。

@Namespace("/")
@Results({
	@Result(name = ActionSupport.SUCCESS,
			type = "redirectAction",
			params = {
				  "actionName" , "%{actionName}"
				, "namespace" , "%{namespace}"
				, "storeVal" , "%{storeVal}"
			}
	),
})
public class redirectAction extends ActionSupport {
	@Action("redirection")
	public String sampleRedirect() throws Exception {
		return SUCCESS;
	}

	private String actionName;
	public String getActionName() {
		return actionName;
	}
	private String namespace;
	public String getNamespace() {
		return namespace;
	}
	private String storeVal;
	public String getStoreVal() {
		return storeVal;
	}
	public String setStoreVal(String storeVal) {
		this.storeVal = storeVal;
	}
}
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?