[richfaces-issues] [JBoss JIRA] Updated: (RF-3833) <a4j:support> does not rerender specified component for newly added rows in a datatable
Tareq Nabeel (JIRA)
jira-events at lists.jboss.org
Mon Jun 30 12:40:51 EDT 2008
[ http://jira.jboss.com/jira/browse/RF-3833?page=all ]
Tareq Nabeel updated RF-3833:
-----------------------------
Description:
When page is loaded initially and page size is 2, clicking on table rows causes <h:outputText id="myText"> to rerender correctly.
However, when page size is increased to 4, clicking on the added rows (3 and 4) does not rerender "myText". Clicking on rows 1 and 2 still updates "myText" correctly.
<a4j:log> output for good rows clicks:
Response content:
<body>
<span id="text">event 1</span>
<meta name="Ajax-Update-Ids" content="text" />
</body>
Message: Find <meta name='Ajax-Update-Ids' content='text'>
<a4j:log> output for bad rows clicks:
Response content:
<body> does not contain the information above but <head> section contains
<meta name="Ajax-Update-Ids" content="" />
Message: "no information in response about elements to replace"
Here's the code:
====================================================================
package event.action;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
@Name("testEventList")
public class TestEventList {
private DataModel eventsModel = new ListDataModel();
private int pageSize = 2;
private List<String> events = new ArrayList<String>();
@In(required = false)
@Out(scope = ScopeType.PAGE, required = false)
private Integer rowKeyVar;
public TestEventList() {
events.add("event 1");
events.add("event 2");
events.add("event 3");
events.add("event 4");
events.add("event 5");
events.add("event 6");
}
public List<SelectItem> getPageSizes() {
List<SelectItem> pageSizeOptions = new ArrayList<SelectItem>();
pageSizeOptions.add(new SelectItem(new Integer(2), "2"));
pageSizeOptions.add(new SelectItem(new Integer(4), "4"));
pageSizeOptions.add(new SelectItem(new Integer(6), "6"));
return pageSizeOptions;
}
public DataModel getEvents() {
eventsModel.setWrappedData(events.subList(0, pageSize));
return eventsModel;
}
public String getSelectedEvent() {
if (rowKeyVar==null) {
rowKeyVar = 0;
}
eventsModel.setRowIndex(this.rowKeyVar.intValue());
return (String) eventsModel.getRowData();
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public void noOp() {
System.out.println("********noOp() rowKeyVar="+rowKeyVar);
}
}
====================================================================
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:s="http://jboss.com/products/seam/taglib" >
<a4j:log popup="false" level="ALL" style="width: 880px; height: 200px;"></a4j:log>
<h:form id="form">
<rich:dataTable id="table" rowKeyVar="rowKeyVar" value="#{testEventList.events}" var="event" >
<rich:column>
<f:facet name="header">
<h:outputText value="Event" />
</f:facet>
<div id="eventName">
#{event}
<a4j:support event="onclick" reRender="text" action="#{testEventList.noOp}" />
</div>
</rich:column>
</rich:dataTable>
<h:panelGrid columns="2">
<h:outputText value="Page Size:"/>
<h:selectOneMenu value="#{testEventList.pageSize}" >
<f:selectItems value="#{testEventList.pageSizes}" />
<a4j:support event="onchange" reRender="table,text" />
</h:selectOneMenu>
</h:panelGrid>
</h:form>
<h:outputText id="text" value="#{testEventList.selectedEvent}" />
</ui:composition>
was:
When page is loaded initially and page size is 2, clicking on table rows causes <h:outputText id="myText"> to rerender correctly.
However, when page size is increased to 4, clicking on the added rows (3 and 4) does not rerender "myText". Clicking on rows 1 and 2 still updates "myText" correctly.
<a4j:log> output for good rows clicks:
Response content:
<body>
<span id="text">event 1</span>
<meta name="Ajax-Update-Ids" content="text" />
</body>
Message: Find <meta name='Ajax-Update-Ids' content='text'>
<a4j:log> output for bad rows clicks:
Response content:
<body> does not contain the information above but <head> section contains
<meta name="Ajax-Update-Ids" content="" />
Message: "no information in response about elements to replace"
Here's the code:
====================================================================
package com.jdsu.ntcems.webapp.event.action;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
@Name("testEventList")
public class TestEventList {
private DataModel eventsModel = new ListDataModel();
private int pageSize = 2;
private List<String> events = new ArrayList<String>();
@In(required = false)
@Out(scope = ScopeType.PAGE, required = false)
private Integer rowKeyVar;
public TestEventList() {
events.add("event 1");
events.add("event 2");
events.add("event 3");
events.add("event 4");
events.add("event 5");
events.add("event 6");
}
public List<SelectItem> getPageSizes() {
List<SelectItem> pageSizeOptions = new ArrayList<SelectItem>();
pageSizeOptions.add(new SelectItem(new Integer(2), "2"));
pageSizeOptions.add(new SelectItem(new Integer(4), "4"));
pageSizeOptions.add(new SelectItem(new Integer(6), "6"));
return pageSizeOptions;
}
public DataModel getEvents() {
eventsModel.setWrappedData(events.subList(0, pageSize));
return eventsModel;
}
public String getSelectedEvent() {
if (rowKeyVar==null) {
rowKeyVar = 0;
}
eventsModel.setRowIndex(this.rowKeyVar.intValue());
return (String) eventsModel.getRowData();
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public void noOp() {
System.out.println("********noOp() rowKeyVar="+rowKeyVar);
}
}
====================================================================
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:s="http://jboss.com/products/seam/taglib" >
<a4j:log popup="false" level="ALL" style="width: 880px; height: 200px;"></a4j:log>
<h:form id="form">
<rich:dataTable id="table" rowKeyVar="rowKeyVar" value="#{testEventList.events}" var="event" >
<rich:column>
<f:facet name="header">
<h:outputText value="Event" />
</f:facet>
<div id="eventName">
#{event}
<a4j:support event="onclick" reRender="text" action="#{testEventList.noOp}" />
</div>
</rich:column>
</rich:dataTable>
<h:panelGrid columns="2">
<h:outputText value="Page Size:"/>
<h:selectOneMenu value="#{testEventList.pageSize}" >
<f:selectItems value="#{testEventList.pageSizes}" />
<a4j:support event="onchange" reRender="table,text" />
</h:selectOneMenu>
</h:panelGrid>
</h:form>
<h:outputText id="text" value="#{testEventList.selectedEvent}" />
</ui:composition>
test code change
> <a4j:support> does not rerender specified component for newly added rows in a datatable
> ---------------------------------------------------------------------------------------
>
> Key: RF-3833
> URL: http://jira.jboss.com/jira/browse/RF-3833
> Project: RichFaces
> Issue Type: Bug
> Affects Versions: 3.2.1
> Environment: JBoss 4.2.2 / Seam 2.0.2 / RichFaces 3.2.1 / Facelets 1.1.14
> Reporter: Tareq Nabeel
>
> When page is loaded initially and page size is 2, clicking on table rows causes <h:outputText id="myText"> to rerender correctly.
> However, when page size is increased to 4, clicking on the added rows (3 and 4) does not rerender "myText". Clicking on rows 1 and 2 still updates "myText" correctly.
> <a4j:log> output for good rows clicks:
> Response content:
> <body>
> <span id="text">event 1</span>
> <meta name="Ajax-Update-Ids" content="text" />
> </body>
> Message: Find <meta name='Ajax-Update-Ids' content='text'>
> <a4j:log> output for bad rows clicks:
> Response content:
> <body> does not contain the information above but <head> section contains
> <meta name="Ajax-Update-Ids" content="" />
>
> Message: "no information in response about elements to replace"
> Here's the code:
> ====================================================================
> package event.action;
> import java.util.ArrayList;
> import java.util.List;
> import javax.faces.model.DataModel;
> import javax.faces.model.ListDataModel;
> import javax.faces.model.SelectItem;
> import org.jboss.seam.ScopeType;
> import org.jboss.seam.annotations.In;
> import org.jboss.seam.annotations.Name;
> import org.jboss.seam.annotations.Out;
> @Name("testEventList")
> public class TestEventList {
> private DataModel eventsModel = new ListDataModel();
> private int pageSize = 2;
> private List<String> events = new ArrayList<String>();
>
> @In(required = false)
> @Out(scope = ScopeType.PAGE, required = false)
> private Integer rowKeyVar;
> public TestEventList() {
> events.add("event 1");
> events.add("event 2");
> events.add("event 3");
> events.add("event 4");
> events.add("event 5");
> events.add("event 6");
> }
>
> public List<SelectItem> getPageSizes() {
> List<SelectItem> pageSizeOptions = new ArrayList<SelectItem>();
> pageSizeOptions.add(new SelectItem(new Integer(2), "2"));
> pageSizeOptions.add(new SelectItem(new Integer(4), "4"));
> pageSizeOptions.add(new SelectItem(new Integer(6), "6"));
> return pageSizeOptions;
> }
> public DataModel getEvents() {
> eventsModel.setWrappedData(events.subList(0, pageSize));
> return eventsModel;
> }
> public String getSelectedEvent() {
> if (rowKeyVar==null) {
> rowKeyVar = 0;
> }
> eventsModel.setRowIndex(this.rowKeyVar.intValue());
> return (String) eventsModel.getRowData();
> }
> public int getPageSize() {
> return pageSize;
> }
> public void setPageSize(int pageSize) {
> this.pageSize = pageSize;
> }
>
> public void noOp() {
> System.out.println("********noOp() rowKeyVar="+rowKeyVar);
> }
> }
> ====================================================================
> <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:s="http://jboss.com/products/seam/taglib" >
> <a4j:log popup="false" level="ALL" style="width: 880px; height: 200px;"></a4j:log>
> <h:form id="form">
> <rich:dataTable id="table" rowKeyVar="rowKeyVar" value="#{testEventList.events}" var="event" >
> <rich:column>
> <f:facet name="header">
> <h:outputText value="Event" />
> </f:facet>
> <div id="eventName">
> #{event}
> <a4j:support event="onclick" reRender="text" action="#{testEventList.noOp}" />
> </div>
> </rich:column>
> </rich:dataTable>
> <h:panelGrid columns="2">
> <h:outputText value="Page Size:"/>
> <h:selectOneMenu value="#{testEventList.pageSize}" >
> <f:selectItems value="#{testEventList.pageSizes}" />
> <a4j:support event="onchange" reRender="table,text" />
> </h:selectOneMenu>
> </h:panelGrid>
> </h:form>
> <h:outputText id="text" value="#{testEventList.selectedEvent}" />
> </ui:composition>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list