[richfaces-issues] [JBoss JIRA] Created: (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:34:31 EDT 2008


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


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