使用PrimeFaces Mobile

时间:2015-05-21 17:20:45

标签: jsf primefaces primefaces-mobile

我在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,它更新了dataTable。另外,我必须稍微更改延迟加载方法,以从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);
    }
}

0 个答案:

没有答案