[richfaces-issues] [JBoss JIRA] Created: (RF-3702) rich:orderingList doesn't update the correct instance when

Zied Hamdi (JIRA) jira-events at lists.jboss.org
Fri Jun 13 12:16:33 EDT 2008


rich:orderingList doesn't update the correct instance when 
-----------------------------------------------------------

                 Key: RF-3702
                 URL: http://jira.jboss.com/jira/browse/RF-3702
             Project: RichFaces
          Issue Type: Bug
    Affects Versions: 3.2.0
         Environment: facelets 1.1.14
            Reporter: Zied Hamdi


The 'selection' attribute of 'rich:orederingList' doesn't update the binded object when in a loop (ui:repeat, a4j:repeat, h:dataTable), but the first element instead. 

See the log output that demonstrates the problem:
Initialized ListHolder with : [my, first]
Initialized ListHolder with : [my, last]
Initialized ListHolder with : [my, everything]
selected set on '[my, first]'
Button clicked on '[my, last]'

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:jsp="http://java.sun.com/JSP/Page"
	xmlns:c="http://java.sun.com/jstl/core">


<f:view>
	<body style="margin: 0; padding: 0;">
	<h:form id="mainForm">
		<h:messages title="errors"/>
		<ui:repeat value="#{testController.listHolders}" var="listHolder">
			<rich:panel id="panel" header="#{listHolder.entries}">
				<rich:orderingList id="orderingList" value="#{listHolder.entries}" var="entry"
					selection="#{listHolder.selected}">
					<rich:column>
						<h:outputText id="outputText" value="#{entry}" />
					</rich:column>
				</rich:orderingList>
				<h:commandButton id="button" actionListener="#{listHolder.doItLstr}"
					value="do it" />
			</rich:panel>
		</ui:repeat>
	</h:form>
	</body>
</f:view>
</html>

public class TestController {
	protected List<ListHolder> listHolders = new ArrayList<ListHolder>();

	{
		listHolders.add(new ListHolder("my first"));
		listHolders.add(new ListHolder("my last"));
		listHolders.add(new ListHolder("my everything"));
	}

	public class ListHolder {
		List<String> entries = new ArrayList<String>();
		Set<String> selected;

		public ListHolder(String value) {
			entries = Arrays.asList(value.split(" "));
			System.out.println("Initialized ListHolder with : " + entries);
		}

		public void doItLstr(ActionEvent actionEvent) {
			System.out.println("Button clicked on '" + entries + "'");
		}

		public List<String> getEntries() {
			return entries;
		}

		public void setEntries(List<String> entries) {
			this.entries = entries;
		}

		public Set<String> getSelected() {
			return selected;
		}

		public void setSelected(Set<String> selected) {
			System.out.println("selected set on '" + entries + "'");
			this.selected = selected;
		}
	}

	public List<ListHolder> getListHolders() {
		return listHolders;
	}

	public void setListHolders(List<ListHolder> listHolders) {
		this.listHolders = listHolders;
	}
}


----------------------------------------- workaround attempt -----------------------------
I've tried to do a binding on each row but it doesn't work too: I have an error as if ui:repeat was performed at compile time, but I'm almost sure it is a render-time tag (it doesn't work with a h:dataTable too)
Caused by: javax.el.PropertyNotFoundException: /test/orderingList.xhtml @21,78 binding="#{listHolder.orderingList}": Target Unreachable, identifier 'listHolder' resolved to null
	at com.sun.facelets.el.TagValueExpression.setValue(TagValueExpression.java:95)
	at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:248)
	at com.sun.facelets.tag.jsf.ComponentHandler.createComponent(ComponentHandler.java:224)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:139)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
	at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
	at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:189)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

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