[TEEDA-335] SubapplicationScopeの挙動がおかしい Created: 2007-07-17 Updated: 2007-11-20 Due: 2007-07-17 Resolved: 2007-07-20 |
|
Status: | Closed |
Project: | Teeda |
Component/s: | Teeda Extension |
Affects Version/s: | 1.0.7 |
Fix Version/s: | None |
Type: | Bug | Priority: | Major |
Reporter: | dewa | Assignee: | shot |
Resolution: | Fixed | Votes: | 0 |
Labels: | None |
Description |
ページ間での値を引き継きが @SubapplicationScope を付けた時と付けない時で動作が異なる。 【再現方法】 <form id="Form"> ②EditPageにて プロパティbbb を作成し、prerender内で bbbに値をセットする public String getBbb() { return bbb; }public void setBbb(String bbb) { this.bbb = bbb; }public Class prerender() { bbb = "bbb"; return null; }③confirm.html を用意する。(ConfirmPageも) <span id="aaa" /><br /> ④ edit.html からサブミットして confirm.html に移動しても、 ⑤ EditPageの bbbプロパティにSubapplicationScopeアノテーションを付けて、 @SubapplicationScope |
Comments |
Comment by shot [ 2007-07-20 ] |
というわけでこの件はcloseとします. |
Comment by shot [ 2007-07-17 ] |
ひとまず、blogに詳細な動きと何故そうなっているのかを書いてみました. あとでドキュメントに起こそうと思います. |
Comment by jflute [ 2007-07-17 ] |
ありがとうございます。 ただ、この違いをハッキリ理解している開発者は少ないように思えます。 SubApplicationScope (デフォルト) という記述がありました。 |
Comment by shot [ 2007-07-17 ] |
はい、UIコンポーネントとして認識されているかどうかは 逆にサブアプリケーションスコープのアノテーションを付加していると |
Comment by jflute [ 2007-07-17 ] |
まとめると: 【デフォルトスコープ】 逆にPageクラスに同じ名前のPropertyが存在していても、 【サブアプリケーションスコープ】 という感じでしょうか??? |
Comment by higa [ 2007-07-17 ] |
SubApplicationScopeのアノテーションがついていない場合、サブミット時にはbbbの値は消えてなくなるのは、仕様どおり。 デフォルトのスコープが、SubApplicationScopeというのが間違っていると思います。 |
Comment by shot [ 2007-07-17 ] |
layoutなしの下記のプリミティブなコードで試してみました. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Add</title> </head> <body> <form id="addForm"> <input type="hidden" id="message-hidden"/> <div> <span id="messages"></span> </div> <span id="message">input and click seasar logo!</span> <table> <tr> <td></td><td><input type="text" id="arg1"/></td> <td><span id="arg1Message"></span></td> </tr> <tr> <td> + </td> <td><input type="text" id="arg2"/></td> <td><span id="arg2Message"></span></td> </tr> </table> <input type="button" value="calculate" id="goAddResult"/> </form> </body> </html> public class AddInputPage { public static final String arg1_TRequiredValidator = null; public static final String arg1_lengthValidator = "minimum=3"; public static final String arg2_TRequiredValidator = null; public static final String arg2_lengthValidator = "minimum=3"; private Integer arg1; private Integer arg2; private Integer result; private String message; public String initialize() { message = "計算サンプル"; return null; } public void prerender() { arg2 = new Integer(999); } public Integer getArg1() { return arg1; } public void setArg1(Integer arg1) { this.arg1 = arg1; } public Integer getArg2() { return arg2; } public void setArg2(Integer arg2) { this.arg2 = arg2; } public Integer getResult() { return result; } public void setResult(Integer result) { this.result = result; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } package examples.teeda.web.add; public class AddResultPage { private Integer arg1; private Integer arg2; private Integer result; private String message; public static final String jumpAddInput_TAKE_OVER = "type=never"; public void initialize() { result = new Integer(arg1.intValue() + arg2.intValue()); } public Integer getArg1() { return arg1; } public void setArg1(Integer arg1) { this.arg1 = arg1; } public Integer getArg2() { return arg2; } public void setArg2(Integer arg2) { this.arg2 = arg2; } public Integer getResult() { return result; } public void setResult(Integer result) { this.result = result; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } もしかしたらこれが関係あるかもしれません. https://www.seasar.org/wiki/index.php?plugin=related&page=FAQ%2FTeeda |