Hi Ali, there are some things you made wrong:
First, and this seems to be a popular error: you can't add a component to another by setting the parent of the child! use parent.getChildren().add(child) instead. Than: You dont neet to invoke encoding on every component, just create then component tree and let jsf do the rest. Try this : public void encodeBegin( FacesContext context ) { HtmlPanelGrid panelGrid = new HtmlPanelGrid(); panelGrid.setColumns(2); List children = panelGrid.getChildren(); UIOutput labelName = new UIOutput(); labelName.setValue("Enter name: "); labelName.setId("nameId"); children.add(labelName); UIInput inputName = new UIInput(); inputName.setId("inputNameId"); // UIInput needs a valueBinding children.add(inputName); UIOutput labelAge = new UIOutput(); labelAge.setValue("Enter age: "); labelName.setId("ageId"); children.add(labelAge); UIInput inputAge = new UIInput(); inputAge.setId("inputAgeId"); // UIInput needs a valueBinding children.add(inputAge); this.getChildren.add(panelGrid); super.encodeBegin(context); } Regards, Volker Ali Raza wrote: > Greetings again, > > Instead of adding components by rendering the htl myself i am adding > chilid components and calling their encode methods as following: > > public void encodeBegin( FacesContext context ) > { > try > { > ResponseWriter writer = context.getResponseWriter(); > writer.writeComment("********************************* THIS > IS THE START OF COMPONENT > **************************************************"); > > HtmlPanelGrid panelGrid = new HtmlPanelGrid(); > panelGrid.setColumns(2); > panelGrid.encodeChildren(context); > > addComponentBegin(context, "panelGridId", this, panelGrid); > addComponentEnd(context, panelGrid); > > UIOutput labelName = new UIOutput(); > labelName.setValue("Enter name: "); > addComponentBegin(context, "nameId", panelGrid, labelName); > addComponentEnd(context, labelName); > > UIInput inputName = new UIInput(); > addComponentBegin(context, "inputNameId", panelGrid, inputName); > addComponentEnd(context, inputName); > > UIOutput labelAge = new UIOutput(); > labelAge.setValue("Enter age: "); > addComponentBegin(context, "ageId", panelGrid, labelAge); > addComponentEnd(context, labelAge); > > UIInput inputAge = new UIInput(); > addComponentBegin(context, "inputAgeId", panelGrid, inputAge); > addComponentEnd(context, inputAge); > > > > > writer.writeComment("********************************* THIS > IS THE END OF COMPONENT > **************************************************"); > } > catch( IOException e ) > { > > } > } > > public static void addComponentBegin( FacesContext context, String > componentId, UIComponent parentComponent, UIComponent childComponent ) > throws IOException > { > if( componentId != null ) > { > childComponent.setId( componentId ); > } > > childComponent.setParent( parentComponent ); > childComponent.encodeBegin ( context ); > } > > public static void addComponentEnd( FacesContext context, > UIComponent childComponent ) throws IOException > { > childComponent.encodeEnd( context ); > } > > My problem is that the layout of the panel grid (2 columns) that i have > added is not maintained and all encoded children get rendered ina > straight line quite like flowlayout in swing. can i use column wise > layout without having to encode the html myself ??? > > Thanx a lot, > Ali > > -- > "A sixteenth century inventor called Wan Hu designed a rocket-propelled > chair on which he planned to ascend into heaven. He built an open cabin, > to which he fitted 47 rockets underneath and above, and two kites to > keep him aloft. Wan Hu disappeared in flame and smoke and was never seen > again. A crater on the moon is now named after him, so in one sense he > made it to the heavens after all. This is the first recorded design of > something approximating to a manned space rocket." > > The Chinese Space Programme. > From Conception to Future Capabilities. > Brian Harvey -- Don't answer to From: address! Mail to this account are droped if not recieved via mailinglist. To contact me direct create the mail address by concatenating my forename to my senders domain.