ExportXMLWordPrintable

    • Type: Bug
    • Resolution: Won't Fix
    • Priority: Major
    • None
    • Affects Version/s: 1.0.13-sp4
    • Component/s: None
    • 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で復元されたはずの値が
      上書きされてしまっている。

            Assignee:
            shot
            Reporter:
            shot
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: