2013-04-02 4 views
1

У меня есть DataTable, как это:primefaces DataTable фаска заголовок

<p:dataTable value="#{noteMB.noteList}" var="noteItem" id="noteListTable" 
     rowKey="#{noteItem.hashCode()}" selectionMode="single" selection="#noteMB.selectedNote}" paginator="true" rows="10" paginatorPosition="top" 
     paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15"> 

    <p:column width="300"> 
     <f:facet name="header"> 
      <h:outputText value="#{noteItem.name == 'blabla' ? 'true' : 'false' }" /> 
     </f:facet> 
      <h:outputText value="#{noteItem.code}" /> 
    </p:column> 
    </p:dataTable> 

мой вопрос: почему noteItem является недействительным в имени фасета = "заголовок" область? , когда я запускаю этот заголовок кода (noteItem.name), является ложным, а значение столбца (noteItem.code) имеет значение.

+0

на самом деле примечание: это номер – KEYSAN

+0

, который, вероятно, заставляет его обрабатываться до того, как создается сама таблица, его для данных заголовка, поэтому вы не можете ожидать, что он сможет получить доступ к элементам списка .... – Daniel

ответ

1

noteItem - ваш вход в var.

var="noteItem"

Этот атрибут вар предполагают, чтобы держать переменную элемент для каждой строки dataTable. var будет перебирать все предметы в вашем noteList.

И, как сказал Даниил, во время тега h:facet создание строк даже не началось. Это главный заголовок каждого столбца, где фактически нет строки данных. Следовательно, вы получаете нулевое значение.

Короче говоря, вы не можете получить доступ к объекту, указанному атрибутом var в гране. Потому что грани независимы друг от друга.

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