Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF ui:重复分页_Jsf 2_Primefaces - Fatal编程技术网

Jsf 2 JSF ui:重复分页

Jsf 2 JSF ui:重复分页,jsf-2,primefaces,Jsf 2,Primefaces,我想知道如何做一个ui:重复多个页面,我点击上一个/下一个按钮来查看下一组数据 目前我有一个用户界面:重复 <ui:repeat id="repeat5" value="#{getData.data}" var="lst2" varStatus="loop"> 我可以按行/列查看内容图像,但所有数据都显示在同一屏幕中,但我只想显示5行和4列,然后使用上一个/下一个按钮查看5行/4列布局中的其余图像 目前我只能指定如下的列配置,如何获取指定的行 <h:panelGrid id

我想知道如何做一个ui:重复多个页面,我点击上一个/下一个按钮来查看下一组数据

目前我有一个用户界面:重复

<ui:repeat id="repeat5" value="#{getData.data}" var="lst2" varStatus="loop">
我可以按行/列查看内容图像,但所有数据都显示在同一屏幕中,但我只想显示5行和4列,然后使用上一个/下一个按钮查看5行/4列布局中的其余图像

目前我只能指定如下的列配置,如何获取指定的行

<h:panelGrid  id="panelGrid3" columns="4" cellspacing="2" cellpadding="2">
更新Rasmus Franke的1代码

请按照您的要求查找代码

<h:form id="mainForm">
<p:tabView id="tabView" >
    <p:tab title="Image Viewer" id="Viewer" titleStyle="height:30px">
        <p:layout>
        <p:layoutUnit id="layoutEast" position="east" size="350" style="height:200px">
                        <p:commandButton type="button" onclick=""  
                                         icon="ui-icon-circle-triangle-w"/>  
                        <p:commandButton type="button" onclick="switchPage(1,29);"  
                                         icon="ui-icon-circle-triangle-e"/>
                        <h:panelGrid  id="panelGrid3" columns="5" cellspacing="2" cellpadding="2">
                            <ui:repeat id="repeat5" value="#{getData.data}" var="imagesLst2" varStatus="loop">
                                    <h:panelGroup>
                                        <p:commandLink id="cl3" action="#{getData.imageID(imagesLst2.imageID)}" update=":mainForm:tabView:example">
                                            <p:graphicImage id="gi3" value="#{imagesStreamer.image}" styleClass="bord" 
                                                            onmousedown="mouseDown(this)" alt="image not available3"  width="60" height="60"
                                                            style="#{loop.index > 29 ? 'visibility: hidden;' : ''}">
                                                <f:param name="id5" value="#{imagesLst2.imageID}" />
                                            </p:graphicImage>
                                        </p:commandLink>
                                    </h:panelGroup>
                            </ui:repeat>
                        </h:panelGrid>
                    </p:layoutUnit>
        </p:layout>
    </p:tab>
</p:tabView>

您希望分页工作在服务器端还是客户端

如果服务器端:您需要在托管bean中创建一个属性,并将其设置为分页值:例如,对于第5页,获取值5的int。使用此数据修改getData.data,使其仅包含该页的数据。这样,您只需获取每个页面显示的相关数据,但必须通过普通post或ajax为每次分页单击发出http请求

If client-side:所有页面的所有数据都应该包含在ui:repeat中,以便在客户端修改javascript。换句话说,就像现在这样。添加可见性:隐藏;除了样式为{loop.index>x?'visibility:hidden;':}的第一页服务器端之外的所有行,其中x是显示的行数。然后创建一个javascript函数,在页面更改时调用该函数,其中包含页码和每页元素数的参数

function switchPage(page, numPerPage){
    var first = (page-1) * numPerPage;
    var last = (page) * numPerPage;
    $('#panelGrid3 tr').show();
    $('#panelGrid3 tr').each(function(i, e){
        if(i >= first || i <= last){
           $(e).show();
        }else{
           $(e).hide();
        }
    });
}

我发现ui:repeat有偏移量和大小,这有助于分页。我们需要在托管bean中实现逻辑,只需跟踪图像的数量、显示的图像,并不断增加/减少“上一个”和“下一个”按钮上的数字[这将控制分页].

我尝试了上面的选项客户端样式部分工作正常,但我无法使脚本正常工作。请检查下面的按钮代码,$'panelGrid3 tr'。如何显示;和.eachfunctioni,e起作用。$'panelGrid3 tr'选择id为panelGrid3的容器内的所有行tr元素。显示移除可见性:隐藏;从他们的目的是重置表。传递给每个行的函数在所有行上循环。i是循环的索引,e是元素tr。一个可能出现错误的地方是选择器panelGrid3,如果该元素在JSF容器中,JSF将添加到其ID中。请发布更多HTML代码,如果需要进一步帮助,请发布JS错误!Rasmus Franke,请查找问题部分更新的代码您的panelGrid位于多个容器中,这些容器将添加到您的id中,以使其在重复内容时具有唯一性,因此您的clientId将类似于mainForm:tabView:possibleLayoutId:panelGrid3。jQuery需要对冒号进行转义,所以这不是很好。我建议在panelGrid3周围创建一个DIV,并给出它和ID,然后在jquery中使用它来选择所有表行。非JSF元素(如DIV)不会被容器ID预先添加。我还建议您使用所选浏览器的html inspector/javascript调试器!ui内的命令链接重复工作正常吗?我在这方面面临问题,我不知道这是否是jsf的限制。它是请求范围吗?每次创建managedBean时都会加载列表吗?谢谢,我的问题与RequestScope有关,我需要再次从数据库中获取数据。经过治疗,它和你的一样有效。