qué lazydatamodel lazy example data dynamic jsf-2 primefaces lazy-loading required

dynamic - lazydatamodel - primefaces lazy loading example



Primeface TabView no mantiene selectOneMenu Values (3)

Desafortunadamente, la implementación de p:tabView con dynamic="true" tiene errores. Existen varios problemas: http://code.google.com/p/primefaces/issues/list?can=2&q=tabView+dynamic&colspec=ID+Type+Status+Priority+TargetVersion+Reporter+Owner+Summary&y=5000&cells=tiles pero los más afectados son los componentes como p:selectOneMenu .

Tuve este problema en mi propio proyecto: los valores de las listas de selección no se enviaron, si estaban activos en la otra pestaña. La solución es - no use pestañas dinámicas , siempre que no sean corregidas. Hay demasiados errores dentro.

Otra cosa que no funciona, es actualizar la vista de pestañas del evento ajax onTabChange .

Hola tengo un Primeface tabView se ve así

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head></h:head> <h:body> <p:messages /> <h:form id="form"> <p:tabView dynamic="true"> <p:tab title="Tab"> <p:inputText required="true" value="value"></p:inputText> </p:tab> <p:tab title="Select"> <p:selectOneMenu value="#{dummyController.selectedValue}" id="select" required="true" requiredMessage="Select is required"> <f:selectItem itemValue="1" itemLabel="asd"></f:selectItem> <f:selectItem itemValue="2" itemLabel="qwe"></f:selectItem> <f:selectItem itemValue="3" itemLabel="zc"></f:selectItem> </p:selectOneMenu> <p:message for="select" /> </p:tab> <p:tab title="Tab"> <p:inputText required="true" value="value"></p:inputText> </p:tab> </p:tabView> <h:commandButton action="#{dummyController.submit}" /> </h:form> </h:body> </ui:composition>

y es el controlador

import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class DummyController implements Serializable { private static final long serialVersionUID = 1L; private int selectedValue; public void submit() { } public int getSelectedValue() { return selectedValue; } public void setSelectedValue(int selectedValue) { this.selectedValue = selectedValue; } }

tiene un comportamiento extraño, siga los pasos que se reproducen:

  • abra la pestaña Seleccionar
  • abrir otra pestaña
  • presione Enviar dos veces

la primera pulsación no ocurre nada de forma regular, la siguiente pulsación activa un mensaje para el seleccionado, aunque siempre tiene un valor

Por favor, dígame si falta algo o si hay alguna solución


No hay una solución directa a esto, es un error en Primeface tabView, vine con esta solución y trabajé

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head></h:head> <h:body> <p:messages /> <h:form id="form"> <p:tabView dynamic="true" activeIndex="#{dummyController.activeindex}" > <p:tab title="Tab" id="tab1"> <p:inputText required="true" value="value"></p:inputText> </p:tab> <p:tab title="Select" id="selectTab"> <p:selectOneMenu disabled="#{dummyController.activeindex != 1}" value="#{dummyController.selectedValue}" id="select" required="true" requiredMessage="Select is required"> <f:selectItem itemValue="" itemLabel=""></f:selectItem> <f:selectItem itemValue="1" itemLabel="asd"></f:selectItem> <f:selectItem itemValue="2" itemLabel="qwe"></f:selectItem> <f:selectItem itemValue="3" itemLabel="zc"></f:selectItem> </p:selectOneMenu> <p:message for="select" /> </p:tab> <p:tab title="Tab" id="tab3"> <p:inputText required="true" value="value"></p:inputText> </p:tab> </p:tabView> <h:commandButton action="#{dummyController.submit}" /> </h:form> </h:body> </ui:composition>

y el controlador:

package com.ibm.sa.kap.ui.controller; import java.io.Serializable; @ManagedBean @ViewScoped public class DummyController implements Serializable { private static final long serialVersionUID = 1L; private int selectedValue; private int activeindex; public void submit() { } public int getSelectedValue() { return selectedValue; } public void setSelectedValue(int selectedValue) { this.selectedValue = selectedValue; } public int getActiveindex() { return activeindex; } public void setActiveindex(int activeindex) { this.activeindex = activeindex; } }

es un deshabilitado condicional de acuerdo con el índice de pestañas, por lo que para evitar que la pestaña revise el valor, ¡qué sucio!


Porque <p:selectOneMenu necesita valor para guardar el elemento elegido.