Использование функции JSTL в JSF - PullRequest
2 голосов
/ 15 декабря 2011

Я хочу использовать функцию JSTL , содержащуюся в JSF2 вот что я пробовал, но условие всегда оценивается как ложное, я думаю, что что-то упустил:

<c:forEach items="#{myBean.toSendCheckBoxes}" var="entry" varStatus="loop">                             

               <input type="checkbox" name="myArray" value="#{entry.value}" />

               <c:choose>

                 <c:when test="#{fn:contains(entry.key,'g')}">
                   <ice:graphicImage url="/resources/images/image1.bmp" />
                   <b>#{entry.key}</b>                      
                 </c:when>

                 <c:otherwise>
                   <ice:graphicImage url="/resources/images/image2.bmp" />
                   <span>#{entry.key}</span>
                 </c:otherwise>



               </c:choose>

            </c:forEach>

если есть другой способ JSF сделать это, было бы очень приятно упомянуть об этом, заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Больше JSFish способа сделать это будет

<ui:repeat value="#{myBean.toSendCheckBoxes}" var="entry" varStatus="loop">                             

  <input type="checkbox" name="myArray" value="#{entry.value}" />

  <ui:fragment rendered="#{fn:contains(entry.key,'g')}">
    <ice:graphicImage url="/resources/images/image1.bmp" />
    <b>#{entry.key}</b>                      
  </ui:fragment>

  <ui:fragment rendered="#{!fn:contains(entry.key,'g')}">
    <ice:graphicImage url="/resources/images/image2.bmp" />
    <span>#{entry.key}</span>
  </ui:fragment>

</ui:repeat>

или даже

<ui:repeat value="#{myBean.toSendCheckBoxes}" var="entry" varStatus="loop">                             

  <input type="checkbox" name="myArray" value="#{entry.value}" />

  <ice:graphicImage url="#{fn:contains(entry.key,'g') ? '/resources/images/image1.bmp' : '/resources/images/image2.bmp'}" />
  <span class="#{fn:contains(entry.key,'g') ? 'bold-style' : ''}">#{entry.key}</span>
</ui:repeat>

, но я ожидаю, что ваше состояние все равно будет оцениваться правильно.

1 голос
/ 15 декабря 2011

Я использую t:dataList (myfaces tomahawk xmlns:t="http://myfaces.apache.org/tomahawk") для зацикливания элементов, чтобы иметь правильную генерацию идентификатора и атрибут rendered для различного отображения элементов в списке.

<t:dataList layout="simple" value="#{myBean.toSendCheckBoxes}" var="entry">                             
    <input type="checkbox" name="myArray" value="#{entry.value}" />
        <h:panelGroup rendered="#{fn:contains(entry.key,'g')}">
            <ice:graphicImage url="/resources/images/image1.bmp" />
            <b>#{entry.key}</b>                      
        </h:panelGroup>
        <h:panelGroup rendered="#{not fn:contains(entry.key,'g')}">
            <ice:graphicImage url="/resources/images/image2.bmp" />
            <span>#{entry.key}</span>
        </h:panelGroup>
</t:dataList>

У меня были проблемы с рендерингом динамических элементов (показать / скрыть строки) в ui:repeat, поэтому мне пришлось использовать t:dataList.

...