Struts2分页

时间:2010-11-25 17:44:24

标签: struts2 pagination

我的Struts2应用程序需要应用于某些记录的分页功能,但我需要自定义的是“Last 1 - 2 - 3 Next”外观,并且还能够使用组合框来选择记录的数量应该是可见的(10 - 20 - 30 - 40 - 50)。

我尝试过两种方法来实现这一目标: 1)使用显示标签库,但我无法自定义外观,因为是由库自动生成的,我不知道如何实现组合框选择应该可见的记录数 2)创建我自己的代码来完成这个功能,但由于到期,工作时间太长而且时间不够。 我的问题是:存在一些用于实现此功能的Struts2库?或者,是否可以自定义页面滚动条和记录组合框的显示标记库?

3 个答案:

答案 0 :(得分:0)

我可以从struts2代码库中获取信息,没有struts2本身提供的功能。

关于Display标签,我没有太多使用它们,但由于它们是oprn源的一部分,我相信我们可以自定义关于显示标签的自定义问题,在显示标签下询问问题,您将获得更好的答案快节奏

答案 1 :(得分:0)

我为此目的编写了一个自定义tld,如下所示,然后就像这样使用它:

使用方法:     

paginate.tag      1}“>

<c:set var="showingPage"
    value="${param.pageNumber == null ? 1 : param.pageNumber}" />

<c:url value="${postUrl}" var="previousUrl">
    <c:param name="pageNumber" value="${showingPage - 1}" />
    <c:param name="perPage" value="${perPage}" />
</c:url>

<c:url value="${postUrl}" var="nextUrl">
    <c:param name="pageNumber" value="${showingPage +1}" />
    <c:param name="perPage" value="${perPage}" />
</c:url>

<div class="pagination" />

<c:if test="${showingPage > 1}">
    <a href="${previousUrl}"> &lt;&lt; Previous</a>
</c:if>

<fmt:formatNumber var="endCounter" pattern="0">
    <%= totalCount % perPage > 0 ? Math.ceil(totalCount/perPage) + 1 : totalCount/perPage %>
</fmt:formatNumber>

<c:forEach begin="1" end="${endCounter}" var="index">
    <c:url value="${postUrl}" var="url">
        <c:param name="pageNumber" value="${index}" />
        <c:param name="perPage" value="${perPage}" />
    </c:url>

    <a href="${url}" class="${index == showingPage ? 'selected' : ''}">${index}</a>
</c:forEach>

<c:if test="${endCounter != showingPage}">
    <a href="${nextUrl}"> Next &gt;&gt;</a>
</c:if>


</div>
</c:if>

答案 2 :(得分:0)

嗨,你可以尝试struts2 jquery网格这里是代码

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">


<sj:div id="resultsDiv">
    <body>
        <div id="mainframe">
            <s:form>
                <div id="sucessMsg">
                    <s:property value="msg" />
                </div>
                <s:url id="editurl" action="editUser" />
                <s:url id="deleteurl" action="deleteUser" />

                <script type="text/javascript">

function editLinkFormatter(cellval, options, rowObject, icon, link_class, link_action) {
    //alert(rowObject.username);

    return "<a href='#' onClick='javascript:openEditDialog(&#34;"+cellval+"&#34;,&#34;"+rowObject.username+"&#34;)'><font class='hyperlink'><u>" + rowObject.username + "</u></font></a>";
}
function deleteLinkFormatter(cellval, options, rowObject, icon, link_class, link_action) {

    return "<a href='deleteUser?userid="+cellval+"' onClick='javascript: return delete_user()'><font class='hyperlink'><u>Delete</u></font></a>";
    //return "<a href=deleteUser?userid="+cellval+">Delete</a>";
}
colModal: [
           {name: 'userid', formatter: function (cellvalue, options, rowObject) {
                   return editLinkFormatter(cellvalue, options, rowObject,
                       'ui-icon-pencil', 'edit-link-class', 'Edit');
               }},
           {name: 'userid', formatter: function (cellvalue, options, rowObject) {
                   return deleteLinkFormatter(cellvalue, options, rowObject, icon, link_class, link_action);
               }}

       ];

        function openEditDialog(userid,username) {


                $("#resultsDiv").load("<s:property value="editurl"/>?userid="+userid+"&username="+username);

        }
        function delete_user() {

            var agree=confirm("Are you sure you want to Delete?");
            if (agree){
                return true;
            }
            else{
                return false;
            }

               // $("#edit_Users").dialog('open');
        }

        function unlockerFormatter(cellval, options, rowObject, icon, link_class, link_action) {

            if(rowObject.loginStatus=='Locked'){

            return "<a href='unlockuser?userid=" + rowObject.userid + "')'><font class='hyperlink'><u>Locked</u></font></a>";
            }
            else{
                return "UnLocked";
            }
            /* return "<a href='deleteUser?userid="+cellval+"' onClick='javascript: return deleteUser("+cellval+")'><u>Delete</u></a>"; */
            //return "<a href=deleteUser?userid="+cellval+">Delete</a>";
        }
</script>
                <sj:dialog id="edit_Users" title="Edit User" autoOpen="false"
                    modal="true" width="800" />
                <sj:div id="draggable" draggable="true">
                    <s:url id="remoteurl" action="viewUserstemp" />


                    <sjg:grid id="gridtable" caption="Users" dataType="json"
                        href="%{remoteurl}" pager="true" gridModel="gridModel"
                        rowList="10,15,20,50,100" rowNum="10" rownumbers="true" viewrecords="true"
                        width="800" navigator="true" navigatorView="false" navigatorDelete="false" navigatorAdd="false" navigatorEdit="false" navigatorSearch="false">
                        <sjg:gridColumn name="userid" index="userid" title="User Id"
                            sortable="false" />
                        <sjg:gridColumn name="userid" index="username" title="User Name"
                            sortable="true" formatter="editLinkFormatter" />
                        <sjg:gridColumn name="emailid" index="emailid" title="Email Id"
                            sortable="true" />
                        <sjg:gridColumn name="userCreatedDate" index="userCreatedDate"
                            title="Created Date" sortable="true" />
                        <sjg:gridColumn name="userModifiedDate" index="userModifiedDate"
                            title="Modified Date" sortable="true" />
                        <sjg:gridColumn name="accstatus" index="accstatus"
                            title="Account Status" sortable="true" />
                        <sjg:gridColumn name="userid" index="username" title="Delete User"
                            sortable="true" formatter="deleteLinkFormatter" />
                      <sjg:gridColumn name="loginStatus" index="loginStatus" title="Unlock User"
                            sortable="true" formatter="unlockerFormatter" />
                    </sjg:grid>

                    <br></br>
                    <s:submit action="loadUserValues" cssClass="ui-button ui-widget ui-state-default ui-corner-all ui-state-hover" name="button"
                        id="button" value="New User"  />
                    <br />


                </sj:div>

            </s:form>
            <%-- 
                    <td height="25" align="left" valign="middle">
                        <s:url id="url" action="unlockuser">
                                <s:param name="userid">
                                    <s:property value="userid" />
                                </s:param>
                            </s:url> 

                                 <s:set name="type" value="%{loginStatus}" />
                        <s:if test="%{#type=='Locked'}">
                            <s:a href="%{url}" title="Click here to Unlock" ><s:property value="loginStatus"/></s:a> 
                    </s:if> 
                    <s:else>            
                        Unlocked
                    </s:else>        --%>

                            </td>
        </div>
    </body>
</sj:div>
</html>