0

我想将分页应用于我的 struts2 Web 应用程序。当用户登录时,我将他们重定向到主页,我想在主页上使用display标签显示所有用户。

我已经完成了研究并最终将其集成到我的 struts2 中,但是当我登录后运行代码时,它会显示消息Nothing found to display

当我在 struts1.3 中以该站点为例进行了相同的操作时,它就可以工作了。我已将以下 JAR 文件复制到我的lib文件夹中:

commons-logging.jar
commons-lang.jar
commons-collections.jar
commons-beanutils.jar
displaytag-1.2.jar

我也复制displaytag.tldstruts-2.17.dtd了我的web-inf文件夹中。

下面是我的代码:

我的个人资料.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@taglib uri="/struts-tags"  prefix="s" %>
<html>
   <head>
   </head>
<body>
    <div id="wrapper">
        <div id="steps">
            <fieldset class="step">
                <legend>Profile
                    </legend>
                <display:table id="data" name="list" requestURI="/display.action" pagesize="1" >
                    <display:column sortable="true">
                        <p>
                            <label for="username">User Name</label>
                            <input id="username" name="username" value="<s:property value="firstName" />" disabled="disabled"/>
                        </p>
                        <p>
                            <label for="email">Father Name</label>
                            <input id="email" name="email" value="<s:property value="lastName"/>" disabled="disabled" />
                        </p>
                        <p>
                            <label for="password">Age</label>
                            <input  name="password" value="<s:property value="dob"/>" disabled="disabled"/>
                        </p>
                        <p>
                            <label for="address">Address</label>
                            <input name="address"  value="<s:property value="emailID"/>" disabled="disabled"/>
                        </p>
                </fieldset>
                    </div>
                </display:column>
            </display:table>
        </div>
    </div>
</body>
</html>

Struts.xml

<action name="display" class="com.java.action.SearchAction">
        <result name="success">/profile.jsp</result>
        <result name="errror">/error.jsp</result>
</action>

SearchAction.java

private ArrayList<UserBean> list=new ArrayList<UserBean>();
//setter getter 
public String execute()
{
    UserBean rt=new UserBean();
    SearchDB user=new SearchDB();
    this.setList(user.search(gender,age_min,age_max,religion,caste,photo_display));
    return SUCCESS;
}

用户Bean.java

public class UserBean {

private String emailID;
private String userName;
private String gender;
private String dob;
private String firstName;
private String lastName;
private int Id;
//setter and getter
}

SearchDB.java

//code to get records. their is no problem here because it is taking records out from db fine.

我不确定,但我的猜测是requestURI和 name 属性,displaytag因为在上面链接的示例中,他们使用name="sessionScope.UserForm.userList". 有人能告诉我我哪里做错了吗?

4

2 回答 2

0

您可能已经解决了它,但无论如何...尝试 OGNL 像这样:

<input id="username" name="username" value="%{data.firstName}" disabled="disabled"/>

它直接使用用户属性的 getter。顺便说一句,我不确定您的禁用标签。您可能应该使用 readonly 代替。

于 2012-08-08T16:53:30.077 回答
0

您已经设置了显示标签的总记录数,例如,

<display:table id="data" name="lstEntities"
                        sort="external" uid="row" htmlId="rowid" class="tborder"
                        style="width:100%"  excludedParams="*"
                        pagesize="${pageCriteria.recordsPerPage}" partialList="true"
                        size="${pageCriteria.totalRecords}" export="false"
                        requestURI="XXX.action">





   public class PaginationCriteria implements Cloneable, CommonConstants,
            Serializable {

        /**
         * Holds the Unie value of Class.
         */
        private static final long serialVersionUID = 8047568459658871831L;

        /**
         * Stores cache Mode.
         */
        private boolean cached;

        /**
         * Stores current page number in the user screen.
         */
        private int currentPage;

        /**
         * Holds the Name of the attribute in Entity to be unique.
         */
        private String distinctRootEntityName;

        /**
         * Stores the information about no of entities to be fetched.
         */
        private boolean fetchAll;

        /**
         * Stores the information about no. of records to be fetched.
         */
        private int recordsPerPage;

        /**
         * Stores the secondary sort column of the entity.
         */
        private String secondarySortBy;

        /**
         * Stores the Sort column of the entity.
         */
        private String sortBy;

        /**
         * Stores the sort order of the entity.
         */
        private boolean sortDescending;

        /**
         * Stores total no. of records.
         */
        private int totalRecords;

//Getters and setters of this properties   

}

从动作类设置每页的记录和页面的第一条记录以及所有内容。在查询执行中设置执行的总数。在 Action 类中有这个域对象。

在 action 类中使用下面的方法来设置分页信息,

/**
     * Fills the Sort column, order, page number to be retrieved.
     * 
     * @param tableId -
     *        Display tag table Id to retrieve the Sort column, order, page
     *        number
     * @param defaultOrderCoulmn -
     *        If no parameter passed for sorting default order column will be
     *        applied.
     */
    protected void fillPaginationInfo(final String tableId,
            final String defaultOrderCoulmn, final String secondarySortColumn) {
        BaseAction.LOGGER.debug(BaseAction.LOG_PREFIX
                + "calling fillPaginationInfo param: tableId :" + tableId
                + "\ndefaultOrderCoulmn:" + defaultOrderCoulmn);
        this.getPageCriteria().setCurrentPage(
                this.getPageNumber(this.getHttpRequest(), tableId));
        String orderBy = this.getSortColumn(this.getHttpRequest(), tableId);
        this.getPageCriteria().setSortBy(
                orderBy == null || orderBy.equals("null") ? defaultOrderCoulmn
                        : orderBy);
        this.getPageCriteria().setSortDescending(
                this.getSortOrderDesc(this.getHttpRequest(), tableId));
        if (secondarySortColumn != null)
            this.getPageCriteria().setSecondarySortBy(secondarySortColumn);
        BaseAction.LOGGER.debug(BaseAction.LOG_PREFIX
                + "done fillPaginationInfo");
    }

希望它会有所帮助。如果您需要任何其他信息,请告诉我。

于 2012-08-16T13:27:50.697 回答