使用JSTL函数fn:length

时间:2013-09-19 08:43:43

标签: jsp jstl jsp-tags

我正在处理一个缺陷,默认情况下,如果使用多个通道,则需要选中所有复选框。但是,目前在多个频道选择的情况下,仅选择第一个频道复选框

JSTL代码是

<label data-use-main="#"
    class="left-align  form-inline checkbox ${fn:length(messageForm.configuredChannels) > 1 ? '' : 'hidden'}">
      <form:checkbox path="emailMessageForm.useMainMessageEmail" />&nbsp;&nbsp;
      <label>
        <spring:message code="message.use.main.content.email"></spring:message>
      </label>
</label>

我无法理解${fn:length(messageForm.configuredChannels) > 1 ? '' : 'hidden'}">如何工作,因为复选框检查条件取决于它。

1 个答案:

答案 0 :(得分:2)

messageForm.configuredChannels是一个集合,fn:length()函数正在检查集合是否包含多个元素。如果集合包含多个元素,则显示包含复选框的label,如果不包含,则通过添加css类隐藏它。

让我们打破表达:

${fn:length(messageForm.configuredChannels) > 1 ? '' : 'hidden'}"

1.  ${}
    This just denotes a JSP EL expression

2.  fn:length(messageForm.configuredChannels) > 1 ? '' : 'hidden'
    This is a ternary operator

3.  fn:length(messageForm.configuredChannels)
    Returns amount of elements in collection