2008-11-07 2 views
0

В моем приложении Seam у меня есть компонент Seam, который возвращает список элементов (@Datamodel), которые я хочу преобразовать в набор элементов HTML <li>. У меня это работает без проблем.Условно обернуть элементы HTML

Но теперь я хочу разбить список в соответствии с выражением EL. Таким образом, выражение EL определяет, должен ли быть запущен новый элемент <ul>. Я попытался следующие:

<s:fragment rendered="#{action.isNewList(index)}"> 
    <ul> 
</s:fragment> 
<!-- stuff that does the <li>'s goes here --> 
<s:fragment rendered="#{action.isNewList(index)}"> 
    </ul> 
</s:fragment> 

Но это недействительно, так как раскрой для <ul> неправильно.

Как мне это сделать?

+0

Мы должны видеть, как вы итерацию. Пожалуйста, напишите больше кода. – branchgabriel 2008-11-07 20:06:19

+0

Как и выход указанного кода, чтобы мы могли видеть, что недействительно в отношении вложенности. – phloopy 2009-01-27 22:09:06

ответ

1

вы можете сделать это с помощью JSF <f:verbatim> тег, который не очень, но работает:

<f:verbatim rendered="#{action.isNewList(index)}"> 
    &lt;ul&gt; 
</f:verbatim> 
<!-- stuff that does the <li>'s goes here --> 
<f:verbatim rendered="#{action.isNewList(index)}"> 
    &lt;/ul&gt; 
</f:verbatim> 
0

Я не знаком с Seam Framework, но если я правильно понял проблему, это могло бы сработать.

<!-- before your loop, open your first <ul> if the (@Datamodel) is not empty --> 

<s:fragment rendered="#{action.isNewList(index)}"> 
    </ul> 
    <ul> 
</s:fragment> 
<!-- stuff that does the <li>'s goes here --> 

<!-- after your loop, close your last </ul> if the (@Datamodel) is not empty --> 
0

Я не знаком с Seam специально, но я видел, что эта же проблема придумать при работе с XSLT и другими структурами XML на основе.

Существует два решения:

  1. пересмотрите свои страницы и данные архитектуры, так что весь список написано в зависимости от одного состояния. Для этого может потребоваться цикл внутри s: фрагмента. !
  2. Wrap обижая недопустимого фрагмент HTML в < [CDATA [...]] >
0

Вы должны иметь что-то вроде этого (я буду использовать псевдо-код):

<ul> 
    <s:for items="itemList" ...> 

     <s:fragment rendered="#{action.isNewList(index) && index > 0}"> 
     </ul> 
     <ul> 
     </s:fragment> 
     <li> 
     <!-- stuff that does the <li>'s goes here --> 
     </li> 

    </s:for> 
</ul> 
Смежные вопросы