我在jsf的primefaces中有一个数据表,我需要使用jquery / js检查数据表是否为空,但我刚刚找到了对PF不起作用的“普通”数据表的标记。
豆
private ArrayList<Curso> curs = null;
private ArrayList<Curso> listado_filtrado;
private DefaultStreamedContent informe_cursos;
HTML
<p:outputPanel id="opTabla" >
<p:dataTable id="tabla_elements"
value="#{Cursos.curs}"
var="element"
filteredValue="#{Cursos.listado_filtrado}"
emptyMessage="No se encontraron elementos"
paginator="true" rows="20"
currentPageReportTemplate="{startRecord} a {endRecord} de {totalRecords}"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"
paginatorPosition="bottom">
<p:ajax event="filter" update="exportar"/>
<f:facet name="header">
<div class="header-field-col">
<p:commandButton id="anadir_curso" value="Añadir curso nuevo" icon="ui-icon-plus" />
</div>
<div class="header-field-col">
<p:commandButton id="exportar" value="Exportar" ajax="false" disabled="#{empty Cursos.curs}"
icon="ui-icon-arrowreturnthick-1-s">
<p:fileDownload value="#{Cursos.informeCursos}" />
</p:commandButton>
</div>
</f:facet>
答案 0 :(得分:2)
您的p:dataTable
最有可能引用一个列表。为它添加一个ajax事件处理程序,例如过滤器(所有可以使页面为空的过滤器)
<p:dataTable value="#{myBean.myList}"...>
<p:ajax event="filter" update="exportButton" ... >
...
</p:dataTable>
使用p:commandButton
disabled
属性,如下所示:
<p:commandButton id="exportButton" value="export" disabled="#{empty myBean.myList}" ... />
如果列表为空,则禁用commandButton客户端和服务器端。所以用户也不能破解客户端。
&#39;更新&#39; commandButton中的元素确保按钮状态在相关事件上更新。这是所有相当基本的ajax内容,也许可以阅读一些关于
的教程