Struts 2: обновление списка объектов из формы с помощью моделируемой архитектуры

Я уже искал и нашел несколько подходов здесь, но я не могу заставить их работать на мой проект.

Я хочу показать страницу редактирования для списка объектов, которые должны быть обновлены сразу. Я использую подход, основанный на моделировании, для достижения этой цели, но я не могу заставить его работать должным образом. Я всегда могу отображать и повторять список и его значения, но я не могу изменить его значения.

Вот что я сейчас делаю:

У меня есть модель 'Teilzeitgrad' в моей базе данных, которая имеет несколько простых атрибутов с геттерами и сеттерами.

public class Teilzeitgrad {

    private Date datumAb;
    private Date datumBis;
    private double betrag;

    // ... getters and setters

}

В своем Action-классе я реализую интерфейс ModelDriven со списком объектов Teilzeitgrad.

public class DienstabschnittViewJahrAction implements ModelDriven<List<Teilzeitgrad>>, Preparable
{
    List<Teilzeitgrad> teilzeitgrads;
    private String tzgTypKey;
    private Integer jahrIndex;

    public String execute() {
        return SUCCESS;
    }

    public List<Teilzeitgrad> getModel()
    {
        if(teilzeitgrads == null) {
            teilzeitgrads = getTeilzeitgradListByTypAndJahr(getTzgTypKey(), getJahrIndex());
        }
        return teilzeitgrads;
    }

    public List<Teilzeitgrad> getTeilzeitgrads()
    {
        return teilzeitgrads;
    }

    public void setTeilzeitgrads(List<Teilzeitgrad> teilzeitgrads)
    {
        this.teilzeitgrads = teilzeitgrads;
    }

    @Override
    public void prepare() throws Exception
    {
        // TODO Auto-generated method stub  
    }

    public String getTzgTypKey()
    {
        return tzgTypKey;
    }

    public void setTzgTypKey(String tzgTypKey)
    {
        this.tzgTypKey = tzgTypKey;
    }

    public Integer getJahrIndex()
    {
        return jahrIndex;
    }

    public void setJahrIndex(Integer jahrIndex)
    {
        this.jahrIndex = jahrIndex;
    }
}

Отображение действий вstruts.xml определяется следующим образом:

<action name="*/auth/GroupAdmin/processEditDienstabschnittJahr" method="execute" class="org.hocon.ul.portal.action.DienstabschnittViewJahrAction">
    <result name="success" type="redirect">${referer}</result>
</action>

В моем файле JSP я выполняю итерацию объекта модели, отображая его значения в текстовых полях или списках следующим образом:

<ul:form action="auth/GroupAdmin/processEditDienstabschnittJahr">
<s:iterator value="model" status="rowStatus">

<tr>
    <td style="text-align: center;">
        <s:date name="model.get(#rowStatus.index).datumAb" var="datumAb_DE" format="dd.MM.yyyy" />
        <s:textfield style="width:70px;" name="model.get(#rowStatus.index).datumAb" value="%{#datumAb_DE}" label="DatumAb"></s:textfield >
    </td>

    <td style="text-align:center;">
        <s:date name="model.get(#rowStatus.index).datumBis" var="datumBis_DE" format="dd.MM.yyyy" />
        <s:textfield style="width:70px;" name="model.get(#rowStatus.index).datumBis" value="%{#datumBis_DE}" label="DatumBis"></s:textfield >
    </td>

    <td class="currency">
        <s:set var="tzgBetrag">
            <fmt:formatNumber type="NUMBER" maxFractionDigits="0"><s:property value="%{getBetrag()*100}"></s:property></fmt:formatNumber>
        </s:set>
        <s:textfield style="width:30px;" maxlength="3" name="model.get(#rowStatus.index).betrag" value="%{#tzgBetrag}" label="Betrag"></s:textfield >
    </td>
</tr>

</s:iterator>
<s:submit style="width:24px; height:24px;" type="image" src="../../../res/24px/floppy-disk.png" value="Speichern"></s:submit>
</ul:form>

Ul-tag взят из пользовательского taglib, который добавляет специфический для клиента параметр url в путь действия.

Поэтому, когда я показываю страницу, на ней отображаются все мои Teilzeitgrad-записи со строками для каждой записи. Но когда я отправляю форму, список моих моделей не заполняется. СеттерsetTeilzeitgrads(List<Teilzeitgrad> teilzeitgrads) даже не называется вообще. Я также пытался получить доступ к списку в синтаксисе массива:

<s:textfield style="width:70px;" name="teilzeitgrads[#rowStatus.index].datumAb" value="%{#datumAb_DE}" label="DatumAb"></s:textfield >

но это тоже не сработало.

Любая помощь в решении этого дела приветствуется! Заранее спасибо!

Lenzo

Ответы на вопрос(5)

Ваш ответ на вопрос