2013-06-28 22 views
1

將DisplayTag庫與Struts 2和外部排序(PaginatedLists)一起使用對我的項目非常有用。將表單提交到Struts動作後,將頁面設置爲1

不幸的是,當我向DisplayTag發送非分頁列表並嘗試讓DisplayTag執行分頁時,這就是問題出現的位置。

目前,我可以導航到我沒有任何問題的所有結果頁面。 當我再次將表單提交給Struts以獲得新結果時,我遇到了問題。然後,DisplayTag不會將其頁碼重置爲1,而是保留在最後一頁選擇的頁面上並保留它。

因此,我的列表包含不同數量的數據,但DisplayTag仍然顯示在我以前的頁面上。

我得到request.getParameter("d-16544-p")當前頁碼,並試圖重置此手動爲1沒有運氣。

另外,

(Integer.parseInt 
    (request.getParameter(
     (new ParamEncoder(tableId) 
         .encodeParameterName(TableTagParameters.PARAMETER_PAGE) 
     )    
    )) - 1) * pageSize 

建議在由標籤文檔並沒有真正幫助不大。

所以我的問題是,在向Struts 2操作提交一個新請求並取回結果後,如何重置Displaytag以轉到頁面「1」。

+0

在displaytag.property文件中寫入代碼。 –

+0

displaytag的屬性文件怎麼樣?我不明白這是如何相關的。 – Stephan

+0

http://stackoverflow.com/questions/16188819/displaytag-struts-2-go-to-specific-page/16195257#16195257 –

回答

1

最後用解決方法解決了這個問題。由於我在同一頁上有兩個displaytag表,所以比預期更復雜。

我在displaytag上添加了clearStatus =「$ {clear1Status}」,其中clear1Status是第一個表的狀態。

然後不得不加在我的jsp

<% 
    String firstNumParameter = new org.displaytag.util.ParamEncoder("tableRow").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE); 

    if(request.getParameter(firstNumParameter) == null) { 
     pageContext.setAttribute("clear1Status", "true"); 

    }else{ 
     pageContext.setAttribute("clear1Status", "false"); 
    } 
%> 

這解決了我的問題的一些額外的代碼。至少在我的情況下。

0

我用clearStatus屬性的<display:table>

<display:table id="${tableId}" class="displaytag" clearStatus="${param['filter'] != null}" 
    excludedParams="filter" keepStatus="true" name="${employListForm.persons}" 
    pagesize="20" requestURI="employlist/personsList.jsp" summary="Employees"> 
    <display:column class="selectPerson" title="Edit"> 
    <t:popup styleClass="button" 
     href="${editUrl}&amp;personIndex=${pageScope[tableRowNum]}"> 
     <t:icon name="edit" alt="Edit" title="Edit" /> 
    </t:popup> 
    </display:column> 
    <display:column property="specialityName" title="Speciality" /> 
    <display:column property="name" title="Name" /> 
    <display:column property="statusWorkName" title="Status" /> 
</display:table> 

當這個JSP被提交表單後呈現(是純提交或AJAX請求 - 無所謂),和形式(要求)有一個名爲filter特殊參數,則片段clearStatus="${param['filter'] != null}"指示DisplayTag清除其存儲的頁碼/等,並從第一頁開始。

當你只是分頁/重新排序,然後請求沒有這樣的參數。

我希望你有這個想法:檢查無論是對特定的請求參數(如果你已經擁有它),或在是否需要重設頁面服務器代碼應該設置請求/會話屬性檢查一些標誌。

相關問題