2017-06-13 13 views
0

私はjsfでプライムフェイスでデータテーブルを持っています。データテーブルがjquery/jsで空であることを確認する必要がありますが、 PFでプライマリでデータテーブルが空であることを確認

private ArrayList<Curso> curs = null; 
private ArrayList<Curso> listado_filtrado; 
private DefaultStreamedContent informe_cursos; 

Htmlの

<p:outputPanel id="opTabla" > 
 
\t \t <p:dataTable id="tabla_elements" 
 
\t    \t \t value="#{Cursos.curs}" 
 
\t    \t \t var="element" 
 
\t    \t \t filteredValue="#{Cursos.listado_filtrado}" 
 
\t    \t \t emptyMessage="No se encontraron elementos" 
 
\t \t \t    paginator="true" rows="20" \t 
 
\t \t \t \t \t \t currentPageReportTemplate="{startRecord} a {endRecord} de {totalRecords}" 
 
\t \t \t \t \t  paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}" 
 
\t \t \t    paginatorPosition="bottom"> 
 
\t \t   \t  \t 
 
\t \t   \t  <p:ajax event="filter" update="exportar"/> 
 
\t \t   \t  \t <f:facet name="header"> 
 
\t \t   \t  \t \t <div class="header-field-col"> 
 
\t   \t \t \t \t \t \t <p:commandButton id="anadir_curso" value="Añadir curso nuevo" icon="ui-icon-plus" /> 
 
\t   \t \t \t \t </div> 
 
\t   \t \t \t \t <div class="header-field-col"> \t 
 
\t   \t \t \t \t \t \t \t 
 
\t   \t \t \t \t \t <p:commandButton id="exportar" value="Exportar" ajax="false" disabled="#{empty Cursos.curs}" 
 
\t   \t \t \t \t \t \t \t \t \t icon="ui-icon-arrowreturnthick-1-s"> 
 
\t   \t \t \t \t \t \t <p:fileDownload value="#{Cursos.informeCursos}" /> \t   \t \t \t \t \t \t 
 
\t   \t \t \t \t \t </p:commandButton> 
 
\t   \t \t \t \t \t 
 
\t \t \t \t \t \t \t </div> 
 
\t \t   \t  \t </f:facet> \t

+0

メッセージだけを表示したい場合は、データテーブルが空で、レコードを含まない場合はいつでも、「emptyMessage」という名前の属性を使用できます。 – Tiny

+0

いいえ、テーブルが空のときにエクスポートコマンドボタンを無効にする必要があります –

+0

次に、dataTableの値で使用されているのと同じ 'list'を取りますが、空のチェックを追加する無効な属性をcommandButtonに追加します。 – Kukeltje

答えて

2

あなたp:dataTable最も可能性の参照リスト。たとえばajaxイベントハンドラを追加します。リストがある場合には、クライアントのcommandButton サーバーサイドを無効

<p:commandButton id="exportButton" value="export" disabled="#{empty myBean.myList}" ... /> 

:フィルター(ページが空白にすることができ、すべてのもの)

<p:dataTable value="#{myBean.myList}"...> 
    <p:ajax event="filter" update="exportButton" ... > 
    ... 
</p:dataTable> 

は、このようなdisabled属性でp:commandButtonを使用します空の。だから、ユーザーはそれをクライアント側でハックすることはできません。

commandButtonの 'update'要素は、関連するイベントでボタンの状態が正常に更新されたことを確認します。これはすべて基本的なAjaxのものです。それについてのチュートリアルを読むかもしれません。

+0

これを試したことがありますが、ボタンを手動で更新すると無効になります –

+0

次に、データテーブルのAjaxイベントが必要ですあなたはどこのコマンドボタンを更新するのですか – Kukeltje

+0

私はajaxイベントで試してみましたが、同じことをします –

関連する問題