Una alternativa que nos brinda primefaces como paquete de widgets JSF es la opción de crear un objeto primefaces dinámico con x componentes desde la capa de negocio. esta opción nos da la facilidad de hacer mas dinamismo sobre la capa de presentación sin limitarnos a los servicios que los componentes fabricados nos brindan.
El código en el managedBean para crear el componente seria:
- /** Crea componente primefaces desde codigo java y devuelve al componente* primefaces xhtml en su propiedad binding*/private TabView tabView;public void setTabView(TabView tabView) {this.tabView = tabView;}public TabView getTabView() {FacesContext fc = FacesContext.getCurrentInstance();tabView = (TabView) fc.getApplication().createComponent("org.primefaces.component.TabView");// cargar la lista de objetos para tabviewList
liscaldimensional = new ArrayList (); liscaldimensional = ejbFacadeCalidadDimensional.findAll();//Se crean dinamicamente las tabs y en su contenido, unas cajas de textofor (CalidadDimensional sub : liscaldimensional) {Tab tab = new Tab();tab.setTitle(sub.getCalidadDimensional());Random randomGenerator = new Random();int total = 4;for (int i = 0; i < total; i++) {InputText inputtext = new InputText();inputtext.setLabel("Label");inputtext.setValue("id:" + inputtext.getClientId());inputtext.setOnfocus("");tab.getChildren().add(inputtext);}tabView.getChildren().add(tab);}return tabView;}
En la pagina .xhtml
- <p:tabview binding="#{calidadDimensionalOfController.tabView}" rendered="true"
- style="float: left; margin-left: 5px; margin-top: 10px; width: 500px;" />
- </p:tabview>