Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.5.3, 1.7.2
-
Component/s: ICE-Components
-
Labels:None
-
Environment:Tomcat 5.5
Java 1.4.2
Jboss 4.2.0
-
Support Case References:
Description
Scenario:
- the user paged to the end of a list of 199 items
- the number of hits per page is changed from (say) 10 to 100
- now, instead of displaying 99 items (the first 100 on the first page, 99 on the current page), the table only displays 9 items.
Not a big deal, but certainly not correct, or at least counter-intuitive.
-
Hide
- ICE-1545.war
- 6.57 MB
- Adnan Durrani
-
- META-INF/MANIFEST.MF 0.0 kB
- main.jsp 5 kB
- index.jsp 0.1 kB
- WEB-INF/lib/xercesImpl.jar 1.15 MB
- WEB-INF/lib/icefaces-comps.jar 1.71 MB
- WEB-INF/lib/commons-collections.jar 558 kB
- WEB-INF/lib/backport-util-concurrent.jar 319 kB
- WEB-INF/lib/commons-beanutils.jar 184 kB
- WEB-INF/lib/commons-logging.jar 52 kB
- WEB-INF/lib/el-api.jar 24 kB
- WEB-INF/lib/jstl.jar 17 kB
- WEB-INF/classes/.../sample/TableBean.java 1 kB
- WEB-INF/lib/icefaces-facelets.jar 593 kB
- WEB-INF/classes/com/.../sample/RowData.class 0.8 kB
- WEB-INF/classes/.../sample/TableBean.class 3 kB
- WEB-INF/.../krysalis-jCharts-1.0.0-alpha-1.jar 151 kB
- WEB-INF/web.xml 2 kB
- WEB-INF/lib/xml-apis.jar 190 kB
- WEB-INF/lib/icefaces.jar 958 kB
- WEB-INF/lib/commons-digester.jar 140 kB
- WEB-INF/lib/jsf-api.jar 356 kB
- WEB-INF/lib/jsf-impl.jar 778 kB
- WEB-INF/lib/commons-fileupload.jar 87 kB
- WEB-INF/lib/el-ri.jar 97 kB
- WEB-INF/faces-config.xml 0.7 kB
- WEB-INF/classes/com/.../sample/RowData.java 0.5 kB
-
Hide
- ICE-1545b.war
- 4.06 MB
- Tyler Johnson
-
- META-INF/MANIFEST.MF 0.0 kB
- WEB-INF/classes/.../SortableList.class 1 kB
- WEB-INF/classes/.../styled/TableBean$1.class 2 kB
- WEB-INF/.../TableBean$InventoryItem.class 1 kB
- WEB-INF/classes/.../styled/TableBean.class 4 kB
- WEB-INF/faces-config.xml 0.8 kB
- WEB-INF/lib/backport-util-concurrent.jar 319 kB
- WEB-INF/lib/commons-beanutils.jar 184 kB
- WEB-INF/lib/commons-collections.jar 558 kB
- WEB-INF/lib/commons-digester.jar 140 kB
- WEB-INF/lib/commons-discovery.jar 70 kB
- WEB-INF/lib/commons-fileupload.jar 87 kB
- WEB-INF/lib/commons-lang.jar 240 kB
- WEB-INF/lib/commons-logging.jar 52 kB
- WEB-INF/lib/icefaces-comps.jar 1.71 MB
- WEB-INF/lib/icefaces.jar 988 kB
- WEB-INF/.../krysalis-jCharts-1.0.0-alpha-1.jar 151 kB
- WEB-INF/web.xml 3 kB
- css/style.css 0.5 kB
- index.jsp 0.2 kB
- styledTable.jspx 8 kB
-
Hide
- icefacessampleNoLibs.zip
- 14 kB
- Tyler Johnson
-
- icefacessampleNoLibs/.../.classpath 0.6 kB
- icefacessampleNoLibs/.../.project 1 kB
- icefacessampleNoLibs/.../RowData.java 0.5 kB
- icefacessampleNoLibs/.../TableBean.java 1 kB
- icefacessampleNoLibs/.../index.jsp 4 kB
- icefacessampleNoLibs/.../MANIFEST.MF 0.0 kB
- icefacessampleNoLibs/.../stylesheet.css 2 kB
- icefacessampleNoLibs/.../RowData.class 0.8 kB
- icefacessampleNoLibs/.../TableBean.class 3 kB
- icefacessampleNoLibs/.../faces-config.xml 0.6 kB
- icefacessampleNoLibs/.../web.xml 5 kB
- icefacessampleNoLibs/.../WebDiagram.gph 1 kB
- icefacessampleNoLibs/.../.project 0.6 kB
- icefacessampleNoLibs/.../application.xml 0.4 kB
-
- SC5235.doc
- 106 kB
- Tyler Johnson
-
- ICE-1545.jpg
- 53 kB
Activity
- All
- Comments
- History
- Activity
- Remote Attachments
- Subversion
I have build the war using the attached source code with ICEfaces 1.7.1. and I found that the pagination was not working, so after adding the following setter into the TableBean, the application is working just fine. I have also attached a war file and a snapshot.
public void setRows(int rows)
{ this.rows = rows; }I have also tested the app with 1.7.0 beta and didn't find any problem either.
The app is compiled using JAVA 5
Attached is a war file with 1.7.2 demonstrating the issue. I've also attached a word doc that describes the issue in greater detail with screenshots.
Sample application intended for deployment on Jboss 4.2.0.GA
The dataPaginator component uses following two properties of the dataTable to calculate pages.
-first
-rows
The dataPaginator component maintains the "first" property of the dataTable internally, and its value changes according to the current page. Let say:
- There are 100 rows in the dataTable
- 10 rows per page
- If page 1 is selected the "first" property of the dataTable will be set to "0".
Now if you give any value less then 100 to the the "rows" attribute, the table will show you expected result.
- If page 10 is selected then the "first" property will be set to "90" by the dataPaginator.
Now only 10 rows can be rendered, regardless of the value of the "row" property.
So its mean if the application wants to change the row attribute dynamically, it should also change the "first" property.
(e.g.)
<ice:dataTable binding="#
" rows="#
{bean.rows}" .../>
public void change(ValueChangeEvent event)
{ .... rows = SOMTHING table.setFirst(ZERO_OR_SOMETHING) }I think the idea is to make it so that if the rows attribute is changed dynamically, it will automagically reset the first attribute.
The change has been made so the "rows" attribute is changed dynamically, will automagically reset the first attribute to 0.
trunk revision: 18123
The fix is not working if the number of rows is changed using a commandButton:
<ice:commandButton id="button" value="Toggle 2-5" immediate="true" actionListener="#
"/>
The fix works fine if inputText is used to change the number f rows:
<ice:inputText value="#
"/>
Changes made so the first property gets set to 0, when the rows get changed dynamically either by any UIComponent.
Modified: D:\work\development\head\svn\ossrepo\icefaces\trunk\icefaces\component\src\com\icesoft\faces\component\ext\HtmlDataTable.java
Sending content: D:\work\development\head\svn\ossrepo\icefaces\trunk\icefaces\component\src\com\icesoft\faces\component\ext\HtmlDataTable.java
Completed: At revision: 18289
Tested successfully with ICEFaces1.8DR1 build4 on Jboss4.2 server.
The number of rows can now be changed dynamically and the first attribuet is reset to 0.
This actually becomes very annoying when the rows attribute is changed to a high enough value to display all the rows in the table, and the paginator's renderFacetsIfSinglePage is set to false. In this case, the paginator disappears completely, while the table is still only showing a subset of the total rows.
Even if renderFacetsIfSinglePage is set to true, the paginator buttons won't do anything once the number of pages is 1. So the user has to set the rows back down to some number that causes total pages to be > 1, flip to page one with the paginator, then set to the rows back up again.