Вложенный интерфейс: повторить условный счетчик

JSF 2.1

Я пытаюсь построить некоторые теги div условно.
Теги div должны иметь следующий формат для их DOM id -

jquery_jplayer_#  // where # is an integer

Дополнительные требования:

Результирующий HTML должен выглядеть следующим образом -

<div id="jquery_jplayer_1" class="jp-jplayer" style="width: 0px; height: 0px;">
  .
  .
  .
</div>
<div id="jquery_jplayer_2" class="jp-jplayer" style="width: 0px; height: 0px;">
  .
  .
  .
</div>

Вот как выглядит мой текущий код, который пытается это сделать:

<ui:repeat value="#{accessibilityTagging.previewTagsOrderByCurrentlySelectedOrderType}" var="currentTag" varStatus="loop_1">
  <ui:repeat value="#{accessibilityTagging.accessibilityElements}" var="accessibilityElement" varStatus="loop_2">
    <ui:repeat value="#{accessibilityElement.featureList}" var="feature" varStatus="loop_3">
      <h:panelGroup rendered="#{feature.feature eq 1">
         <!-- some irrelevant stuff happening here -->
      </h:panelGroup>
      <h:panelGroup rendered="#{feature.feature eq 2}">
         <!-- relevant stuff happens here! -->
         <div id="jquery_jplayer_#{loop_1.index + loop_2.index + loop_3.index + 1}" class="jp-jplayer"></div>
         <div id="jp_container_#{loop_1.index + loop_2.index + loop_3.index + 1}" class="jp-audio">
           <div class="jp-type-single">
             <div class="jp-gui jp-interface">
               <ul class="jp-controls">
                 <li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>
                 <li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>
                 <li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>
                 <li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>
                 <li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>
                 <li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>
               </ul>
               <div class="jp-progress">
                 <div class="jp-seek-bar">
                   <div class="jp-play-bar"></div>
                 </div>
               </div>
               <div class="jp-volume-bar">
                 <div class="jp-volume-bar-value"></div>
               </div>
               <script type="text/javascript">
                 //<![CDATA[
                 $(document).ready(function(){
                   $("#jquery_jplayer_#{loop_1.index + loop_2.index + loop_3.index + 1}").jPlayer({
                     ready: function (event) {
                       $(this).jPlayer("setMedia", {
                         mp3: "#{ttsManager.serverURL}/TTSServlet?text="+encodeURI('#{feature.info}')
                       });
                     },
                     swfPath: "/common/js",
                     supplied: "mp3, m4a, oga",
                     wmode: "window",
                     smoothPlayBar: true,
                     keyEnabled: true,
                     remainingDuration: false,
                     toggleDuration: false,
                     errorAlerts: true
                   });
                 });
                 //]]>
               </script>
       </h:panelGroup>
     </ui:repeat>
   </ui:repeat>
 </ui:repeat>

Есть две проблемы с тем, что у меня есть:

  1. Внутренний цикл сбрасывает varStatus обратно в 0 после завершения итерации.
  2. Значение индекса varStatus начинается с 0. Мне нужно, чтобы начать с 1.

Любые предложения о том, как решить эту проблему? (Есть ли способ сохранить текущий счетчик в переменном или скрытом поле?)

Я не хочу использовать JSTL (например, <c:set> поскольку это будет смешивать компоненты JSF с JSP).

0 ответов

Другие вопросы по тегам