[Seasar-user:8448] [Teeda]includeを使用したときの値の引継ぎについて

koga [E-MAIL ADDRESS DELETED]
2007年 6月 19日 (火) 00:16:57 JST


古賀です。
お世話になっております。

Teeda-1.0.8-SNAPSHOTで開発しております。

includeを使用したときの値の引継ぎについて
質問させていただきたく投稿します。

以下のようなPageがあるとします。

- EditPage(edit.html): nameを入力するフォームがあるPage
- IncludePage(include.html): edit.htmlをincludeしているPage
- ResultPage(result.html): 遷移先のPage。EditPageのdoExecuteで指定する。

この場合、nameはEditPageに設定されますが、
遷移元はIncludePageとなるため、遷移先のResultPageには
値が引継がれません。

引継ぐために以下の方法を考えました。
- EditPageでIncludePageをインジェクトし、
  IncludePageに値を設定してから遷移する。
- sessionを使用する。

前者でうまくいっているのですが、少々強引な気がします…。
ライフサイクルやスコープ等の観点から前者は正しいのでしょうか?
それとも、このようなケースではsessionを使用するべきなのでしょうか?

お手数ですが、ご教示いただけますようお願い致します。

以下、簡単な例です。
----------
・include.html

<html xmlns:te="http://www.seasar.org/teeda/extension">
<head>
<title>include</title>
</head>
<body>
<te:include te:src="/test/edit.html"/>
</body>
</html>

・IncludePage

package aaa.web.test;

public class IncludePage {

	private String name;
	
	public Class initialize() {
		return null;
	}

	public Class prerender() {
		return null;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

・edit.html

<html>
<head>
<title>edit</title>
</head>
<body>
<p>
<form id="executeForm">
	<p>
		名前: <input id="name" type="text" size="30" value="" />
		<input id="doExecute" type="submit" value="送信" />
	</p>
</form>
</p>
</body>
</html>

・EditPage

package aaa.web.test;

public class EditPage {

	private String name;
	private IncludePage includePage;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public String doExecute() {
		includePage.setName(name);
		return "result";
	}

	public Class initialize() {
		return null;
	}

	public Class prerender() {
		return null;
	}

	public void setIncludePage(IncludePage includePage) {
		this.includePage = includePage;
	}
}

・result.html

<html>
<head>
<title>result</title>
</head>
<body>
<h1>result</h1>
<p>
<span id="name"></span>
</p>
</body>
</html>

・ResultPage

package aaa.web.test;

public class ResultPage extends AbstractTestPage {

	private String name;
	
	public Class initialize() {
		return null;
	}

	public Class prerender() {
		return null;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}












Seasar-user メーリングリストの案内