2012-06-19 32 views
8

我有一個問題:春<形式:複選框>標籤和CSS類

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

如果之前的線在JSP中使用,那麼生成的HTML如下:

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

請注意,CSS類被添加到輸入標籤。相反,CSS類被添加到輸入標籤我需要這個類被添加到span標籤。有沒有解決我的問題,其他然後使用<c:forEach>標籤

在此先感謝。很抱歉,如果問題重複。如果是這樣,請將我指向原始問題。

乾杯, 蒂霍米爾

P.S:

我使用的是春天3.1.0.RELEASE。

+0

你爲什麼不想使用'forEach'? – davioooh

+0

我希望編寫foreach循環的方法更短。 :) – Tiho

回答

5

你可以試試這個:

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

此刻這不是選項,因爲roleSelections是字符串數組。 – Tiho

+0

如果你的'item'是一個字符串,你可以簡單地使用'$ {item}' – davioooh

+0

謝謝你的提示。有用。 – Tiho

0

沒有foreach循環可以嘗試下面的代碼

定義CSS例如

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

然後在你的代碼中刪除 「的CssClass」 屬性複選框使用「元素」屬性。對於這個元素屬性,你已經指定了上面的CSS。例如,

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

請參考下面鏈接,Spring MVC的複選框屬性 http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.checkboxes

+0

這不會有幫助,因爲在該視圖中有很多div標籤。任何方式感謝指向我的文檔。我認爲這將有助於未來。 – Tiho

21

所有你需要做的是指定「元素」屬性:

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

這會附上每個「輸入」標籤,並跨越類「複選框」的「標籤」標籤。

+1

這是更好的答案。最有可能的是你想要在自己的行中顯示每個複選框。在這種情況下,屬性element =「div」就是你正在尋找的東西:) – theadam

+0

ty,它也適用於我的分區:) –