1

複数のチャネルが使用されている場合、デフォルトですべてのチェックボックスを選択する必要があるという欠陥に取り組んでいます。ただし、現在、複数のチャンネルが選択されている場合、最初のチャンネルのチェックボックスは選択されていません。

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'}"> チェックボックスのチェック状態が依存するため、どのように機能するのか理解できません。

4

1 に答える 1

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
于 2013-09-19T08:48:27.467 に答える