Yes, that's what I meant. It should be similar to what you have in the getter method, except that it doesn't create the parent and it doesn't use setParent().
On 11/3/05, Enrique Medina <[EMAIL PROTECTED]> wrote: > Hi Mike, > > I've been taking a look to your code, and if I understand well, you mean to > do what you implement in the > RowAndColumnRelationshipsHtmlDataTable constructor, but > within my setter method inside my backing bean, don't you? > > 2005/11/3, Mike Kienenberger <[EMAIL PROTECTED]>: > > Enrique, > > > > Try a different approach. > > > > Put this code in your setPanelTabuladores() method. You don't need > > to create a HtmlPanelTabbedPane because this component is already > > created for you. All you need to do is create tabs and add them to > > the table passed into the method. I think you should do this using > > parent.getChildren().add(child) instead of child.setParent() as that's > > how I've always seen it done in the past. > > > > You can find a very old example I wrote of dynamically creating > > components in a dataTable subclass as an attachment here. It might > > be of help. If so, the most interesting class is > > RowAndColumnRelationshipsHtmlDataTable as it does all of > the creation > > work. > > > > > http://issues.apache.org/jira/secure/attachment/12311217/RowAndColumnRelationshipComponent.zip > > > > > > On 11/3/05, Enrique Medina <[EMAIL PROTECTED]> wrote: > > > Hi, > > > > > > I am trying to dynamically create some components inside my backing > bean, > > > but I can't get it to work right now... > > > > > > Imagine I have to dynamically generate some tabs inside a > PanelTabbedPane, > > > and one data table inside each tab, so I'll explain what I am doing: > > > > > > 1) In my JSP I define the HtmlPanelTabbedPaneTag: > > > > > > <t:panelTabbedPane bgcolor="#F8F8F8" align="center" > > > > > > binding="#{puntuacionesBean.panelTabuladores}"> > > > > > > and as can be seen, I bind it to my component in my backing bean > > > (puntuacionesBean). > > > > > > 2) Inside my backing bean (puntuacionesBean), I declare a variable > named > > > "panelTabuladores" with type UIPanel. Then I also declare a getter and a > > > setter for it. > > > > > > 3) When the page is rendered, the HtmlPanelTabbedPaneTag invokes the > > > HtmlPanelTabbedPane component, so my "getPanelTabuladores" method is > called. > > > So: > > > 3.1) I check whether my "panelTabuladores" variable is null or not. > If > > > it is null, the I create myself the component, and then I create all the > > > components that will be the children of the HtmlPanelTabbedPane > (simulating > > > tags inside tags): > > > > > > if (this.panelTabuladores == null) > > > { > > > this.panelTabuladores = (HtmlPanelTabbedPane) FacesUtils > > > > .getApplication().createComponent( > > > > > > HtmlPanelTabbedPane.COMPONENT_TYPE); > > > > > > UIPanel tab0 = (HtmlPanelTab) FacesUtils.getApplication() > > > > .createComponent(HtmlPanelTab.COMPONENT_TYPE); > > > ; > > > tab0.setParent(this.panelTabuladores); > > > tab0.setId("panelTab0"); > > > tab0.getAttributes().put("label", "Variable0"); > > > > > > UIData tabla0 = (HtmlDataTable) FacesUtils.getApplication() > > > > .createComponent(HtmlDataTable.COMPONENT_TYPE); > > > tabla0.setId("tablaEdicionPuntuaciones0"); > > > tabla0.setVar("puntuacion0"); > > > tabla0.getAttributes().put("width", "100%"); > > > tabla0.getAttributes().put("cellspacing", "1"); > > > tabla0.getAttributes().put("cellpadding", "2"); > > > tabla0.getAttributes().put("renderedIfEmpty", > Boolean.FALSE); > > > tabla0.getAttributes().put("preserveDataModel", > Boolean.FALSE); > > > tabla0.setValueBinding("value", FacesUtils > > > > > > .getValueBinding("#{puntuaciones.listasPuntuaciones[0]}")); > > > tabla0.setRows(10); > > > tabla0.getAttributes().put("rowClasses", "impar,par"); > > > tabla0.getAttributes().put("headerClass", "apptblhdr"); > > > tabla0.getAttributes().put("rowIndexVar", "numFila0"); > > > tabla0.getAttributes().put("rowOnMouseOver", > "tblOver(this)"); > > > tabla0.getAttributes().put("rowOnMouseOut", > > > "tblOut(this, #{numFila0%2})"); > > > > > > UIColumn col1 = (HtmlSimpleColumn) > FacesUtils.getApplication() > > > > .createComponent(HtmlSimpleColumn.COMPONENT_TYPE); > > > col1.getAttributes().put("style", "text-align: center;"); > > > UIOutput texto1 = (HtmlOutputText) > FacesUtils.getApplication() > > > > .createComponent(HtmlOutputText.COMPONENT_TYPE); > > > texto1.setValueBinding("value", FacesUtils > > > > .getValueBinding("#{mensajes.puntuaciones_Tramos}")); > > > col1.setHeader(texto1); > > > UIOutput texto2 = (HtmlOutputText) > FacesUtils.getApplication() > > > > .createComponent(HtmlOutputText.COMPONENT_TYPE); > > > texto2 > > > .setValueBinding( > > > "value", > > > FacesUtils > > > > > > .getValueBinding("#{puntuacion0.valor.minimo} - > > > #{puntuacion0.valor.maximo}")); > > > col1.getChildren().add(texto2); > > > > > > UIColumn col2 = (HtmlSimpleColumn) > FacesUtils.getApplication() > > > > .createComponent(HtmlSimpleColumn.COMPONENT_TYPE); > > > col2.getAttributes().put("style", "text-align: center;"); > > > UIInput texto3 = (HtmlInputText) > FacesUtils.getApplication() > > > > .createComponent(HtmlInputText.COMPONENT_TYPE); > > > texto3.setValueBinding("value", FacesUtils > > > > .getValueBinding("#{puntuacion0.puntuacion}")); > > > col2.getChildren().add(texto3); > > > > > > tabla0.getChildren().add(col1); > > > tabla0.getChildren().add(col2); > > > > > > tab0.getChildren().add(tabla0); > > > > > > > this.panelTabuladores.getChildren().add(tab0); > > > > > > .... > > > > > > As can be seen, I create every subcomponent and add it to > the > > > getChildren list of the parent component. > > > 3.2) I return the just initialized "panelTabuladores" variables as > a > > > HtmlPanelTabbedPane component > > > > > > The problem is that the tabs are visible, but the data table seems to > be > > > absolutely ignored, as it doesn't appear in the page. > > > > > > However if, instead of the data table, I simply create tab with a text > > > component inside it, then it is correctly displayed, so there must be a > > > problem I cannot see with my data table. > > > > > > Any help would be really appreciated. > > > > > > >

