2009-12-19 15 views
10

Tengo un objeto de comando FaxForm y contiene una lista de objetos FaxStatus dentro de una propiedad faxStatusList.Listas dinámicamente vinculantes con la etiqueta de formulario de Spring

public class FaxForm { 
    private List<FaxStatus> faxStatusList; 
    public void setFaxStatusList(List<FaxStatus> faxStatusList) { 
    this.faxStatusList = faxStatusList; 
    } 
    public List<FaxStatus> getFaxStatusList() { 
    return faxStatusList; 
    } 
} 

inicialmente tenían una página JSP que uniría los objetos realizando el siguiente:

<c:forEach items="${esaFaxForm.faxStatusList}" var="item" varStatus="loop"> 
    <tr class="tableAltBackground"> 
    <td> 
     <form:checkbox path="faxStatusList[${loop.index}].selected"/> 
    </td> 
    <td> 
     <form:select path="faxStatusList[${loop.index}].status" items="${esaFaxForm.statusOptions}" onchange="checkThisBox(this);"/> 
    </td> 
    <td> 
     <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.name}</a> 
     <form:hidden path="faxStatusList[${loop.index}].name"/> 
    </td> 
    <td> 
     <a href="${statusContUrl}?id=${item.id}&status=${item.status}" onclick="openFaxWindow('${viewFaxUrl}?id=${item.id}', ${loop.index});">${item.id}</a> 
     <form:hidden path="faxStatusList[${loop.index}].id"/> 
    </td> 
    </tr> 
</c:forEach> 

Sin embargo, estoy tratando de encontrar la manera que podía hacer la unión sin el bucle foreach y el índice . Los ejemplos en el sitio web Spring muestran el enlace estableciendo la ruta al nombre de la lista. ¿Hay alguna forma de vincular las propiedades? He intentado esto pero falla:

<form:checkbox path="faxStatusList.faxStatus.selected"/> 
<form:select path="faxStatusList.faxStatus.status" items="${esaFaxForm.statusOptions}"/> 

El faxStatusList tiene un captador y el método de selección y las variables FaxStatus cada uno tiene propiedades de captador/definidor. Aparece el error "Propiedad no válida 'faxStatusList.faxStatus' de la clase de bean ..."

+0

faxStatusList es una propiedad indexada. Entonces no puedes usar algo como faxStatusList.faxStatus. Use faxStatusList []. FaxStatus en su lugar. –

+0

Me gusta su código actual como respuesta, ya que ofrece una gran flexibilidad. – Steve

Respuesta

9

Las etiquetas de formulario de primavera tienen casillas de verificación etiqueta. Se puede utilizar la siguiente manera para hacer la unión de forma automática:

<form:checkboxes items="${faxStatusList}" path="faxStatusList" itemLabel="name" itemValue="id" delimiter="<br/>" onclick="yourOnClickMethodIfYouNeed(this);"/> 

El fragmento anterior mostrará una lista de elementos delimitados casilla con la etiqueta br. Cualquier cambio realizado en el estado de las casillas de verificación se reflejará adecuadamente en su formulario de fax. objeto FaxStatusList

Cuestiones relacionadas