2012-06-19 35 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,它也适用于我的分区:) –