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.tldしました。struts-2.17.dtdweb-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;
}

UserBean.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.

よくわかりませんが、requestURIdisplaytagのリンクの例ではname="sessionScope.UserForm.userList". 誰かが私がどこで間違ったのか教えてください。

4

2 に答える 2

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 クラスに含めます。

アクション クラスでは、以下のメソッドを使用してページネーション情報を設定します。

/**
     * 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 に答える
0

あなたはおそらくすでにそれを解決しましたが、とにかく...次のようにOGNLを試してください:

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

ユーザー プロパティのゲッターを直接使用します。ところで、あなたの無効タグはよくわかりません。おそらく代わりに readonly を使用する必要があります。

于 2012-08-08T16:53:30.077 に答える