[ 
https://jira.jboss.org/jira/browse/RF-3702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nick Belaevski resolved RF-3702.
--------------------------------

    Fix Version/s:     (was: Future)
       Resolution: Incomplete Description
         Assignee: Alexander Dubovsky  (was: Nick Belaevski)


> rich:orderingList doesn't update the correct instance when 
> -----------------------------------------------------------
>
>                 Key: RF-3702
>                 URL: https://jira.jboss.org/jira/browse/RF-3702
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.2.0
>         Environment: facelets 1.1.14
>            Reporter: Zied Hamdi
>            Assignee: Alexander Dubovsky
>
> 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: 
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to