-
Type: Bug
-
Resolution: Won't Fix
-
Priority: Major
-
None
-
Affects Version/s: 1.0.13-sp4
-
Component/s: None
-
Labels:None
THtmlSelectOneRadioを使ったサンプルでdisabled=trueとした場合に、
同一画面遷移でPageスコープの値が復元しない。
ThtmlSelectOneMenuやTHtmlSelectManyCheckboxでは復元するが
Radioの場合だけ復元しない。
再現ケースは下記のようになる。
public class SelectOneRadioPage { @PageScope private int aaa; @PageScope private List aaaItems; public String initialize() { aaaItems = new ArrayList(); AaaDto dto1 = new AaaDto(); dto1.setValue(0); dto1.setLabel("AAAA"); aaaItems.add(dto1); AaaDto dto2 = new AaaDto(); dto2.setValue(1); dto2.setLabel("BBBB"); aaaItems.add(dto2); AaaDto dto3 = new AaaDto(); dto3.setValue(2); dto3.setLabel("CCCC"); aaaItems.add(dto3); aaa = 1; return null; } public int getAaa() { return aaa; } public void setAaa(int aaa) { this.aaa = aaa; } public List getAaaItems() { return aaaItems; } public void setAaaItems(List aaaItems) { this.aaaItems = aaaItems; } public String doAction() { return null; } }
<html xmlns:te="http://www.seasar.org/teeda/extension"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>SelectOneRadio</title> </head> <body> <form id="selectOneRadioForm"> <span id="aaa" disabled="true"> <input type="radio" name="aaa" value="0" checked="checked"/>aaa <input type="radio" name="aaa" value="1"/>bbb <input type="radio" name="aaa" value="2"/>ccc </span> <span id="aaa-display"/> <input type="submit" value="calculate" id="doAction"/> <span id="aaaMessage"/> </form> </body> </html>
原因は、通るはずの無いUpdateModelフェーズが通ってしまっているための模様。
THtmlSelctOneMenuなどでは、HTML側の対象コンポーネントからsubmittedValueが飛んでこない場合
UpdateModelはスキップしているのだが、THthtmlSelectOneRadioはそのロジックが抜けている。
このため、無駄にUpdateModelフェーズが動き、結果としてPageScopeで復元されたはずの値が
上書きされてしまっている。