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.
- Dynamic component creation Enrique Medina
- Re: Dynamic component creation Mike Kienenberger
- Re: Dynamic component creation Enrique Medina
- Re: Dynamic component creation Mike Kienenberger

