我在 PrimeFaces Mobile 页面中使用了一个 dataTable,在其中设置了一个不显示的标题。在普通页面(非移动页面)中,它的工作方式与描述的文档中的一样。
例子
...
<f:view renderKitId="PRIMEFACES_MOBILE" />
...
<h:body>
<h:form>
<p:dataTable var="item" value="#{eintraege.getLazyModel(null)}"
paginator="true" rows="20" selectionMode="single"
selection="#{eintraege.selected}" rowKey="#{item.id}"
id="table-auftrag" lazy="true"
emptyMessage="Keine Einträge gefunden" filteredValue="#{item}"
widgetVar="eintragTable" sortBy="#{item.datumFormated}"
sortOrder="descending">
<p:ajax event="rowSelect" listener="#{eintraege.openMobile}" />
<f:facet name="header">
<p:outputPanel>
<p:inputText id="globalFilter"
onkeyup="PF('eintragTable').filter()"
placeholder="Suchbegriff eingeben" style="width: 100%" />
</p:outputPanel>
</f:facet>
<p:column headerText="" id="image">
<h:outputLink value="#{request.contextPath}/mobile/eintrag.xhtml"
rendered="#{item.hasImage()}">
<f:param name="id" value="#{item.id}" />
<p:graphicImage value="/images/thumb?id=#{item.id}" />
</h:outputLink>
</p:column>
...
编辑:将“c:”更改为“f:”
更新 今天我写了一些肮脏的解决方法来解决这个问题,同时通过移动页面上网。
我添加了一个带有更新数据表的 onkeyup 事件的新 inputText。此外,我必须稍微更改延迟加载方法以插入来自 inputText 的值,该值现在位于 dataTable 之外。
这页纸:
<p:inputText id="globalFilter" onkeyup="PF('eintragTable').filter()"
placeholder="Suchbegriff eingeben" />
<p:dataTable ...
LazyDataModel 类:
@Override
public List<Eintrag> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, Object> filters) {
...
if (filters.keySet().isEmpty()) {
UIComponent component = FacesContext.getCurrentInstance()
.getViewRoot().findComponent("form:globalFilter");
if (component != null) {
Object value = component.getAttributes().get("value");
filters.put("globalFilter", value);
}
}