2012-06-19 6 views
8

ho edizione con:primavera <form: caselle di controllo> tag e css classe

<form:checkboxes path="roles" cssClass="checkbox" items="${roleSelections}" /> 

Se viene utilizzata la linea precedente in JSP, quindi generato html appare come:

<span><input id="roles1" name="roles" class="checkbox" type="checkbox" value="ROLE_NEWUSER"/><label for="roles1">ROLE_NEWUSER</label></span> 
<span><input id="roles2" name="roles" class="checkbox" type="checkbox" value="ROLE_USER" checked="checked"/><label for="roles2">ROLE_USER</label></span> 
<span><input id="roles3" name="roles" class="checkbox" type="checkbox" value="ROLE_EDITOR"/><label for="roles3">ROLE_EDITOR</label></span> 
<span><input id="roles4" name="roles" class="checkbox" type="checkbox" value="ROLE_ADMINISTRATOR"/><label for="roles4">ROLE_ADMINISTRATOR</label></span> 

Si prega di notare che i CSS la classe viene aggiunta al tag di input. Invece la classe css viene aggiunta al tag input Ho bisogno che questa classe sia aggiunta al tag span. C'è qualche soluzione al mio problema, altri poi usando il tag <c:forEach>

Grazie in anticipo. Scusa se la domanda è duplicata. Se è così, per favore indicami la domanda originale.

Cheers, Tihomir

P.S .:

sto usando la primavera 3.1.0.RELEASE.

+0

perché non vuoi usare 'forEach'? – davioooh

+0

Spero che ci sia un modo più breve per scrivere il ciclo foreach. :) – Tiho

risposta

5

Si può provare questo:

<c:forEach var="item" items="${roleSelections}"> 
    <span class="checkbox"><form:checkbox path="roles" value="${item}"></span> 
</c:forEach> 
+0

al momento non è un'opzione, perché roleSelections è una matrice di stringhe. – Tiho

+0

se il tuo 'item' è una stringa puoi usare semplicemente' $ {item} ' – davioooh

+0

grazie per un suggerimento. Funziona. – Tiho

0

Senza forEach ciclo, si può provare sottostante Codice

Definire css per esempio

<style type="text/css"> 
      div { 
       padding-left: 10px; 
       background-color: #00ae42; 
      } 
     </style> 

E poi nel codice Rimuovi "CssClass" attributo delle caselle di controllo usa l'attributo "elemento". e per questo attributo elemento hai già specificato css sopra. Es.

<form:checkboxes path="roles" element="div" items="${roleSelections}" /> 

consultare di seguito collegamento per le caselle di controllo Spring MVC attributi http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.checkboxes

+0

questo non aiuterà, poiché ci sono molti tag div in quella vista. In ogni caso grazie per avermi indicato sulla documentazione. Penso che questo aiuterà in futuro. – Tiho

21

Tutto quello che dovete fare è specificare 'elemento' attributo:

<form:checkboxes path="roles" element="span class='checkbox'" items="${roleSelections}" /> 

Ciò racchiudere ogni tag "ingresso" e tag "label" in span con classe "checkbox".

+1

Questa è la risposta migliore. Molto probabilmente volevi che le caselle di controllo fossero visualizzate ciascuna nella propria linea. In questo caso, attributo element = "div" è quello che stai cercando :) – theadam

+0

ty, ha funzionato anche per il mio div :) –

Problemi correlati