[richfaces-issues] [JBoss JIRA] Commented: (RF-1133) rich:datascroller does not reset when data model is changed
Aladdin El-Nattar (JIRA)
jira-events at lists.jboss.org
Mon Jul 28 18:19:54 EDT 2008
[ https://jira.jboss.org/jira/browse/RF-1133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12422829#action_12422829 ]
Aladdin El-Nattar commented on RF-1133:
---------------------------------------
Not sure if this warrants a new issue to be created or not, but HtmlDatascroller.setPage(int) doesn't seem to work in 3.2.1.GA.
I tried it in 3.2.0 and it works. The code is quite simple. Here is my xhtml snippet:
<h:dataTable id="contents-table"
value="#{action.contents.contentList}" var="item" rows="#{action.contents.itemsPerPage}"
binding="#{action.contents.dataTable}">
...
</h:dataTable>
<a4j:outputPanel id="pagination-panel" layout="block">
<rich:datascroller id="pagination-scroller" for="contents-table" renderIfSinglePage="false"
binding="#{action.contents.scroller}" maxPages="20">
<f:facet name="first">
<h:outputText value="First" />
</f:facet>
<f:facet name="last">
<h:outputText value="Last" />
</f:facet>
</rich:datascroller>
</a4j:outputPanel>
Here is my code that is triggered by a different component with reRender="contents-table, pagination-scroller":
@Name(value="action.contents)
public class ...
...
private HtmlDataTable dataTable; (getter and setter exist)
private HtmlDatascroller scroller; (getter and setter exist)
...
@Observer
public void handleNewDataEvent() {
// Change content in table
populateContentList();
logger.info("************ PAGE WAS " + this.scroller.getPage());
this.scroller.setPage(1);
logger.info("************ PAGE IS " + this.scroller.getPage());
}
Conditions:
- Table contains 100 rows
- Max rows per page is 2
Use Case:
- Datascroller shows many pages
- Click on page 2
- Use different component to trigger page reset and populate table with new data
Result in logs is:
INFO [...] ************ PAGE WAS 2
INFO [...] ************ PAGE IS 2
Page should have been set to 1. Why is it still set to 2? It's as if setPage(int) is not doing anything.
In 3.2.0.GA I get this:
INFO [...] ************ PAGE WAS 2
INFO [...] ************ PAGE IS 1
and everything works fine.
> rich:datascroller does not reset when data model is changed
> -----------------------------------------------------------
>
> Key: RF-1133
> URL: https://jira.jboss.org/jira/browse/RF-1133
> Project: RichFaces
> Issue Type: Bug
> Components: docs updated
> Affects Versions: 3.1.1
> Reporter: henrik lindberg
> Assignee: Tsikhon Kuprevich
> Priority: Critical
> Fix For: 3.2.0
>
>
> When the datamodel for a rich:dataTable is replaced with a new model the rich:datascroller still remembers its old page index.
> Now, in order to make it work, I have to look up the UIData and set the index to 0 when I change the datamodel.
> I would expect it to either be set to 0, or to the value of "first" attribute in the rich:dataTable when its model is changed.
> This problem is blocking me from releasing my application - I have *many* affected datascrollers and doing the following for all of them would not be fun...
> // how I reset the first value - perhaps there are beter ways to do this
> String id = "spaceForm:content_list";
> UIComponent comp = FacesContext.getCurrentInstance().getViewRoot().findComponent( id );
> if(comp == null)
> throw new IllegalArgumentException("Can not find component with id = '"+id+"'");
> if(!(comp instanceof UIData))
> throw new IllegalArgumentException("Id does not refer to a UIData instance");
> UIData uidata = (UIData)comp;
> uidata.setFirst(0);
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list