2013-06-19 1 views
0

Я пытаюсь вручную создать HTML-форму в JSF, используя ui: repeat. Теперь у меня есть некоторые проблемы с атрибутом «rendered». Мой код выглядит следующим образом:условное отображение tr, таблица построения с помощью ui: repeat

<ui:repeat varStatus="status" value="#{bean.keys}" var="key"> 
    <tr jsf:rendered="#{status.index%4==0}"> 
     <td id="#{key}"> 
      contents 
     </td> 
    </tr> <!--or even </tr jsf:rendered="#{status.index%4==0}">--> 
</ui:repeat> 

Я стараюсь оказывать <tr> тега условно, но я хочу сделать дочерний элемент <td> безусловно, каждую итерацию. Я знаю, что это не стандартное поведение JSF, потому что по умолчанию они не будут отображать дочерние элементы unrendered, но есть ли другой способ реализовать это требование? Я также попытался:

<tr> 
    <ui:repeat varStatus="status" value="#{bean.keys}" var="key"> 
     <td id="#{key}"> 
      contents 
     </td> 
     <h:panelgroup rendered="#{status.index%4==0}"></tr><tr></h:panelgroup> 
    </ui:repeat> 
</tr> 

Но этот последний фрагмент не будет разбирать, потому что закрытие является неожиданным (он ожидает, закрывающий тег для ч: panelgroup)

ответ

1

испускают его как сбежавшего HTML.

<h:outputText value="&lt;/tr&gt;&lt;tr&gt;" escape="false" rendered="#{status.index%4==0}" /> 

escape="false" просто, чтобы избежать этого JSF сбегает его еще раз в рамках предотвращения атак XSS, что может вызвать его в конечном итоге, как &amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;

+0

Спасибо за умного решения. Именно то, что я искал. – Cloud

+0

Добро пожаловать. – BalusC

Смежные вопросы