2012-03-16 5 views
7

Estoy usando Spring 3.1.0.RELEASE. Tengo este campo en mi objeto de comando ...¿Cómo hacer que las casillas de verificación de resorte se marquen por defecto?

public Set<EventFeed> getUserEventFeeds() { 
    return this.userEventFeeds; 
} 

En mi página JSP primavera, quiero mostrar una lista de casilla alimenta todo caso posible, y luego tienen casillas de verificación comprueba si el usuario tiene uno en su conjunto . Quiero tener algo de HTML de formato especial alrededor de cada casilla, por lo que estoy tratando ...

<form:form method="Post" action="eventfeeds.jsp" commandName="user"> 
    ... 
     <c:forEach var="eventFeed" items="${eventFeeds}"> 
     <tr> 
      <td><form:checkbox path="userEventFeeds" value="${eventFeed}"/></td> 
      <td>${eventFeed.title}</td> 
     </tr> 
     </c:forEach> 
    ... 

Sin embargo, los artículos no están siendo revisados ​​por defecto si uno está en el conjunto. ¿Cómo hago esto? Aquí está la carpeta que estoy usando en mi clase de controlador ...

@InitBinder 
public void initBinder(WebDataBinder binder) { 
    binder.registerCustomEditor(EventFeed.class, new EventFeedEditor()); 
} 

private class EventFeedEditor extends PropertyEditorSupport { 
    @Override 
    public void setAsText(String text) throws IllegalArgumentException { 
     setValue(eventFeedsDao.findById(Integer.valueOf(text))); 
    } 

    @Override 
    public String getAsText() { 
     return ((EventFeed) getValue()).getId().toString(); 
    } 
} 

Respuesta

7

@Dave, hay algo llamado form: checkBoxes. Puedes probar con eso.

<form:checkboxes path="userEventFeeds" items="${eventFeeds}" itemLabel="id" itemValue="value"/> 

Mi hipótesis aquí es que debe tener "id" y "valor" definidos en la clase EventFeed.

Acabo de probar esto teniendo una String [] availableList y String [] selectedList. Funciona como el encanto. Puedes intentarlo también.

+0

Por mi descripción en la pregunta, quiero poner HTML adicional alrededor de cada casilla de verificación. Entonces, ¿puedo seguir sacando el HTML que quiero (enumerado en la pregunta) usando form: checkboxes? Hasta ahora no he encontrado una manera de hacer eso. – Dave

+0

¿Quiere decir que quiere la tabla alrededor de esa casilla de verificación con la etiqueta de casilla de verificación en una columna y la casilla de verificación en la columna adyacente? – raddykrish

+0

Hay un atributo llamado "elemento" en el formulario: checkboxes tag, que según su documentación dice "Especifica el elemento HTML que se utiliza para encerrar cada etiqueta 'input' con tipo 'checkbox'. Por defecto es 'span'." Puede consultar la documentación aquí en este enlace http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.checkboxes. – raddykrish

5

Usted puede hacer esto mediante la colocación de propiedad predeterminada seleccionada cierto en su clase

class User { 
    boolean userEventFeeds = true; 

} 
0

He intentado tanto form:checkboxes y form:checkbox con los mismos datos y los primeros trabajos, el segundo no. (Mismo lanzamiento de Spring que tiene)

Parece que hubo un bug que, a pesar de su reclamo, parece que todavía está allí.

6

Curiosamente esto funciona:

<form:checkbox path="services" value="${type}" checked="checked"/> 
+0

Es una buena práctica establecer el valor predeterminado del campo en particular, como sugirió Jhonathan. Si, por algún motivo, no puede, esta solución funciona. – theblang

0

Por mi caso de uso (reacción en cosas en una lista que no tiene nada que ver con el objeto que se está lleno), este código funcionó:

(Por favor, tenga en cuenta que este es un tipo de código de último recurso, otras soluciones son más adecuadas).

<%@ taglib prefix="jstl" uri="http://java.sun.com/jsp/jstl/core" %> 
<jstl:forEach var="listObject" items="${someList}"> 
    <jstl:if test="${listObject.active}"> 
    <form:checkbox path="active" checked="checked"/> 
    </jstl:if> 
    <jstl:if test="${!listObject.active}"> 
    <form:checkbox path="active"/> 
    </jstl:if> 
</jstl:forEach> 
Cuestiones relacionadas