[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 メーリングリストの案内