Hi Ricard, no, this is not a bug. findComponent is supposed to work from the enclosing naming container. If you need to search without this, you need to traverse the hierarchy. I do think I remember we implemented "::text" for a case like this already in the standard - in any case, the component libraries I am using imlement this already ;)
best regards, Martin On Tue, Jun 21, 2011 at 3:06 PM, RICARD MORE FARRES <ricard.m...@mango.com> wrote: > Thanks Leonardo, > > Already done, but I have another question: > > Which is the reason that UIComponentBase.findComponent(String expr) looks for > the searched component, starting from the closest parent that implements > NamingContainer? > Look at this example: > > <h:outputText id="text" value="#{bean.texto}"></h:outputText> > <ui:repeat id="repeat" value="#{bean.textos}" var="texto"> > <h:commandLink id="command" value="#{texto}"> > <f:ajax event="click" listener="#{bean.actionListener}" render="text"/> > </h:commandLink> > </ui:repeat> > > If we try to render this view, we get: > javax.faces.FacesException: Component with id:texto not found > > This exception is trown by HtmlAjaxBehaviorRenderer.mapToString when he find > every component identified in the render attribute. I think they converts the > id's in the render attribute, to the clientId of every component referenced. > The problem is that UIRepeat implements NamingContainer, so the commandLink > inside that UIRepeat is gonna search the component identified by 'text' > inside the children list of repeat tag. > But it should works, isn't it? Nothing wrong to re render an outputtext from > command link that is inside a repeat. > I have reimplemented method findComponent in my own components, in order to > find the id starting from the view root... and it works. > > Is this another bug? > > Regards, > Ricard > > -----Mensaje original----- > De: Leonardo Uribe [mailto:lu4...@gmail.com] > Enviado el: lunes, 20 de junio de 2011 19:09 > Para: MyFaces Development > CC: RICARD MORE FARRES > Asunto: Re: UIRepeat offset and size problem > > Hi > > It is a bug. Please create an issue here: > > https://issues.apache.org/jira/browse/MYFACES > > I have already a patch, so as soon as you create the issue I'll commit > it. Later, you can get a nightly build snapshot here: > > https://repository.apache.org/content/repositories/snapshots/org/apache/myfaces/core/ > > regards, > > Leonardo Uribe > > 2011/6/20 RICARD MORE FARRES <ricard.m...@mango.com>: >> Hello, >> >> >> >> I am testing MyFaces 2.1.1 implemantation, in order to upgrade our >> aplication from version 1.2.7. >> >> >> >> I have found a problem with parameters offset and size of ui:repeat tag. >> >> offset sets the first index of the list to iterate over. >> >> size is the number of element to iterate. >> >> >> >> If I have a list of Strings like this: >> >> private String[] textos = new String[] {"B1", "B2", "B3", "B4", "B5", "B6", >> "B7"}; >> >> >> >> public String[] getTextos() { >> >> return textos; >> >> } >> >> >> >> And I declare repeat tag: >> >> <ui:repeat value="#{bean.textos}" var="texto" offset="0" size="1"> >> >> <h:outputText value="#{texto}"/><br/> >> >> </ui:repeat> >> >> >> >> It shows elements B1 and B2 (iterate over indexes 0 and 1). If I change >> offset to 1, it will show elements B2 and B3. >> >> But if I set offset="2" in order to ietare over indexes 2 and 3 (elements B3 >> and B4), I get an exception: >> >> >> >> javax.faces.FacesException: iteration offset cannot be greater than >> collection size >> >> at >> org.apache.myfaces.view.facelets.component.UIRepeat._validateAttributes(UIRepeat.java:552) >> >> at >> org.apache.myfaces.view.facelets.component.UIRepeat.process(UIRepeat.java:581) >> >> ... >> >> >> >> If I want to avoid this error, size must be allways greater tha offset, but >> it should be possible to iterate over last two elements of a 102 elements >> list starting from index 100, for example (offset=100,size=1). >> >> And should not be "1" the lower value for size? Now, if you set 0 to size, >> ui:repeat iterates once... >> >> >> >> Thanks in advance, >> >> Ricard >> >> >> >> >> >> Para el medioambiente cada gesto cuenta: por favor, no imprimas este e-mail >> si no es realmente necesario. >> >> Este correo y sus archivos asociados son privados y confidenciales y va >> dirigido exclusivamente a su destinatario. Si recibe este correo sin ser el >> destinatario del mismo,le rogamos proceda a su eliminación y lo ponga en >> conocimiento del emisor. La difusión por cualquier medio del contenido de >> este correo podría ser sancionada conforme a lo previsto en las leyes >> españolas. No se autoriza la utilización con fines comerciales o para su >> incorporación a ficheros automatizados de las direcciones del emisor o del >> destinatario. >> >> Each one of us can do our bit for the environment: please, do not print this >> e-mail unless it is absolutely essential. >> >> This e-mail and its attached files are confidential and are exclusively >> intented for their addressees. If you have received this e-mail and it is >> not addressed to you, please notify us of the error by replying to it before >> proceeding to delete it. The diffusion of the contents of this e-mail by >> whatever means may be penalised in accordance with Spanish law. The >> utilisation of the addresses of the sender and the addressee for commercial >> purposes or for inclusion on computer files is not authorized. >> > > > > > > > > > Para el > medioambiente cada gesto cuenta: por favor, no imprimas este e-mail si no es > realmente necesario > > > > > > > > Este correo y sus > archivos asociados son privados y confidenciales y va dirigido exclusivamente > a su destinatario. Si > > > > recibe este > correo sin ser el destinatario del mismo, le rogamos proceda a su eliminacion > y lo ponga en conocimiento > > > > del emisor. La > difusion por cualquier medio del contenido de este correo podría ser > sancionada conforme a lo previsto > > > > en las leyes > espanyolas. No se autoriza la utilizacion con fines comerciales o para su > incorporacion a ficheros > > > > automatizados de > las direcciones del emisor o del destinatario. > > > > > > > > Each one of us > can do our bit for the environment: please, do not print this e-mail unless > it is absolutely essential. > > > > > > > > This mail and its > attached files are confidential and are exclusively intented to their > addresses. In case you may > > > > receive this mail > not being its address, we beg you to let us know the error by reply and to > proceed to delete it. The > > > > circulation by > any mean of this mail could be penalised in accordance with the Spanish > legislation. The use of both > > > > the transmitter > and the addresses with a commercial aim, or in order to be incorporated to > automated files, > > > > is not authorized. > > > > > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces