2010-02-01 2 views
2

Похоже, это должно быть возможно, но ...?JSF rich: dataList, отображаемый в строке?

Использование richfaces и JSF Я выполняю итерацию по списку с использованием rich: dataList ... все в порядке, за исключением того, что мне хотелось бы выборочно «отображать» каждую итерацию, возможно ли это?

Например:

<rich:dataList value="#{list}" var="item"> 
    <h:outputText value="#{item.something}" /> 
</rich:dataList> 

Я хотел бы быть в состоянии оказать выход выборочно, например, если некоторое свойство «элемента» истинно или что угодно.

Я попытался обертывание outputText в outputPanel и похожи, но если выход ПКП не визуализируются «<li>» итерации по-прежнему оказывается, так что вы получите точку пули ни с чем рядом с ней, а не она просто пропуская item полностью :(

Любой способ решить это или я SOL? Я понимаю, что я бы хотел, чтобы список элементов отображался готовым перед рукой, но по многим причинам я не буду повторять здесь, это isn

ответ

1

Нечеткое поведение. Я попытался воспроизвести его с помощью Tomahawk'st:dataList, и я вижу точно такое же поведение viour! Лучшее, что вы можете сделать, это заменить его на a4j:repeat и отобразить простые элементы HTML <li> вручную. Что-то вроде:

<ul class="rich-datalist"> 
    <a4j:repeat value="#{list}" var="item"> 
     <h:panelGroup rendered="#{item.somecondition}"> 
      <li class="rich-list-item"> 
       <h:outputText value="#{item.something}" /> 
      </li> 
     </h:panelGroup> 
    </a4j:repeat> 
</ul> 

(я позаимствовал те же имена классов из rich:dataList, как описано here так, что она сохраняет кожу)

лично я бы, однако, отметить это как ошибку или, по крайней мере, как и поведение нежелательно отчет это для мальчиков позади библиотеки компонентов, о которой идет речь. I've already done it for Tomahawk.

+0

Я думал об этом, но действительно ли это, чтобы обернуть «ли» группой панелей? Я думал, что это приведет к HTML, как:

  • материал
который, кажется, плохо – rat

+0

хммм Нету, кажется, не приводит к пролетами, окружающих Ли, благодаря balusc полезно, как всегда :) – rat

+0

Добро пожаловать. Он будет отображать только '', когда он * нуждается в *, чтобы отобразить некоторые ** атрибуты **, например. 'id',' style', 'styleClass' и т. д. – BalusC

0

Простой. Добавьте атрибут rendered в тег h: outputText.

<rich:dataList value="#{list}" var="item"> 
    <h:outputText value="#{item.something}" rendered="#{item.isDisplayed}"/> 
</rich:dataList> 
Смежные вопросы