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