読者です 読者をやめる 読者になる 読者になる

続Listのinstance属性をsessionにせずにForEachで利用

S2JSF

# 追記
http://s2jsf.seasar.org/ja/example.html#itemsSave
ドキュメントを更新しました。




まず,app.diconにRenderer登録用として以下の記述を追加します.
app.dicon

  <component
    class="org.seasar.teeda.core.render.autoregister.TeedaRendererComponentAutoRegister">
    <initMethod name="addReferenceClass">
      <arg>@org.seasar.teeda.extension.render.html.HtmlTextRenderer@class</arg>
    </initMethod>
    <initMethod name="addClassPattern">
      <arg>"org.seasar.teeda.extension.render.html"</arg>
      <arg>"THtmlItemsSaveHiddenRenderer"</arg>
    </initMethod>
  </component>

次に,jsf.diconにTaglib登録として以下の記述を追加します.
jsf.dicon

  <initMethod name="addTaglibUri">
    <arg>"te"</arg>
    <arg>"http://www.seasar.org/teeda/extension"</arg>
  </initMethod>


HTMLに以下の記述を追加します.

<span m:inject="te:inputHidden" m:value="#{hogeDtoList}"/>


hogeDtoListはdiconファイルに以下のように登録されていると仮定します.
※instance属性がrequestになっています

  <component name="hogeDtoList" class="java.util.ArrayList" instance="request">
    <initMethod name="add" >
      <arg>
        <component class="examples.jsf.dto.HogeDto" instance="prototype">
          <property name="input">"aaa"</property>
        </component>
      </arg>
    </initMethod>
    <initMethod name="add">
      <arg>
        <component class="examples.jsf.dto.HogeDto" instance="prototype">
          <property name="input">"bbb"</property>
        </component>
      </arg>
    </initMethod>
  </component>


Action側には,Listのgetterを用意します

    /**
     * @return hogeDtoList
     */
    public List getHogeDtoList() {
        return hogeDtoList;
    }


S2JSFのドキュメントにも近々コミットして公開します.