myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Lessard <simon.lessar...@gmail.com>
Subject Re: Custom component with children - Child component added dynamically at end appears as first child when rendered <full source code included>
Date Tue, 27 Oct 2009 17:48:57 GMT
Hi,

This is a good explanation. Is it possible for you to test a JSP version? To
be honest, I'm a bit flabbergasted to see something like that happen in
Facelet. Can you check the state of the component's children within the
formSubmitted method?

~ Simon

On Tue, Oct 27, 2009 at 11:43 AM, <KPanneerselvam@inautix.co.in> wrote:

>
> OK. Here is a highly simplified case of the problem (source included):
>
> The custom component 'repeat' will simply iterate through its children and
> renders them.
>
> *Usage:*
>
> <netx:repeat binding="#{testBean.htmlRepeat}">
>         <h:outputText value=*"Child-1"*/>
>         <h:outputText value=*"Child-2"*/>
> </netx:repeat>
>
>
> *Renderer output:*
>
> [begin - Child-1Child-2 - end]
>
>
> *BackingBean:*
>
> The repeat component is bounded to a backing bean like so:
>
> *public* *class* TestBean {
>
>         *private* HtmlRepeat htmlRepeat;
>
>         *public* HtmlRepeat getHtmlRepeat() {
>                 *return* *null*;
>         }
>
>         *public* *void* setHtmlRepeat(HtmlRepeat htmlRepeat) {
>                 *this*.htmlRepeat = htmlRepeat;
>         }
>
>         // -- action method
>         *public* String formSubmitted() {
>                 System.*out*.println("formSubmitted()");
>
>                 HtmlOutputText child = *new* HtmlOutputText();
>                 child.setValue("Child-3");
>                 htmlRepeat.getChildren().add(child);
>
>                 *return* *null*;
>         }
> }
>
> and the form is submitted using <*h:commandButton* value=*"Submit"* action
> ="#{testBean.formSubmitted}"/>
>
> The formSubmitted() method simply adds a child to htmlRepeat like so
> htmlRepeat.getChildren().add(child). Note that the child is added as the
> last child to the children list. But when the response is renderered, the
> newly added child appears at the beginning.
>
> *Expected Output:*
> *        * [begin - Child-1Child-2Child-3 - end]
>
> *Actual Output:*
> *        * [begin - Child-3Child-1Child-2 - end]
>
> *Attachments:*
>
> 1. jsf-repeat.jar - Deployable JSF component packaged as jar (contains
> .java files, faces-config.xml and facelet taglib for the custom component).
>
>         Download >> http://keerthi.linux.googlepages.com/jsf-repeat.jar
>
> 2. TestRepeat.xhtml - Facelet view using the <netx:repeat/> custom
> component
>
>         Download >> http://keerthi.linux.googlepages.com/TestRepeat.xhtml
>
> *Note:* The component requires facelets and so no TLD has been defined.
> Tested on myfaces1.2.6/Tomcat 6.20
>
>

Mime
View raw message