Struts 2: actualización de una lista de objetos desde un formulario con arquitectura basada en modelos

Ya busqué y encontré varios enfoques aquí, pero no puedo hacer que trabajen para mi proyecto.

Quiero mostrar una página de edición para una lista de objetos, que deberían actualizarse todos a la vez. Utilizo el enfoque de arquitectura basada en modelos para lograr esto, pero no puedo hacerlo funcionar correctamente. Siempre puedo mostrar e iterar la lista y sus valores, pero no puedo modificar sus valores.

Así que aquí está lo que estoy haciendo actualmente:

Tengo un modelo 'Teilzeitgrad' en mi base de datos, que tiene algunos atributos simples con los que obtienen y configuran.

public class Teilzeitgrad {

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

    // ... getters and setters

}

En mi clase de acción implemento la interfaz ModelDriven con una lista de objetos 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;
    }
}

El mapeo de acciones enstruts.xml Se define como sigue:

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

En mi archivo JSP estoy iterando el objeto modelo, mostrando sus valores en campos de texto o listas de la siguiente manera:

<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>

La etiqueta ul es de un taglib personalizado, que agrega un parámetro url específico del cliente a la ruta de acción.

Entonces, cuando muestro la página, muestra todos mis registros Teilzeitgrad con una fila para cada entrada. Pero cuando envío el formulario, la lista de mis modelos no se rellena. El compositorsetTeilzeitgrads(List<Teilzeitgrad> teilzeitgrads) Ni siquiera se llama en absoluto. También traté de acceder a la lista en sintaxis de matriz:

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

Pero esto tampoco funcionó.

Cualquier ayuda para resolver este caso es apreciada! ¡Gracias por adelantado!

Lenzo

Respuestas a la pregunta(5)

Su respuesta a la pregunta