Para escoger el cliente y articulo estoy usando ovelayPanel de tipo dynamix, aqui pueden ver como funciona, lo que hago es seleccionar una fila de la datatable cliente y cargarlo en las cajas de texto, pero luego que hago eso el datatable de articulos no se muestra.
Adjunto mi codigo del xhtml
Código HTML:
Ver original
<h:form id="formFactura"> <p:fieldset legend="#{msgs.form_factura}" style="margin-bottom:20px"> <p:panelGrid columns="6" cellpadding="6"> <h:outputText value="#{msgs.form_nueva_factura}" /> <p:inputText value="#{facturaBean.unaFactura.facCodigo}" size="10"/> <h:outputText value="#{msgs.form_vendedor}" /> <p:inputText value="#{loginBean.usuario.usuNombre}" size="50" /> <h:outputText value="#{msgs.form_fecha}" /> <p:calendar id="fecha" value="#{facturaBean.unaFactura.facFecha}" size="18" /> </p:panelGrid> <p:panelGrid columns="5" cellpadding="6"> <h:outputText value="#{msgs.form_id}" /> <h:outputText value="" /> <h:outputText value="#{msgs.form_rsocial}" /> <h:outputText value="#{msgs.form_ruc}" /> <h:outputText value="#{msgs.form_descuento}" /> <p:inputText value="#{facturaBean.unCliente.cliCodigo}" size="10"/> <p:commandButton id="btnCliente" value="Cliente" type="button" /> <p:inputText value="#{facturaBean.unCliente.cliRazonsocial}" size="50"/> <p:inputText value="#{facturaBean.unCliente.cliRuc}" size="15"/> <p:inputText value="#{facturaBean.unCliente.cliDescuento}" size="15"/> <p:commandButton id="btnArticulo" value="Articulo" type="button" /> </p:panelGrid> </p:fieldset> <p:overlayPanel id="moviePanel2" for="btnArticulo" hideEffect="fade" dynamic="true" style="width:600px"> <p:dataTable id="basicDT" var="articulo" value="#{facturaBean.articulos}" paginator="true" rows="10" paginatorPosition="bottom" rowsPerPageTemplate="5,10,15,20" > <f:facet name="header"> #{msgs.lArticulos} </f:facet> <p:column headerText="#{msgs.lId}" width="15"> <h:outputText value="#{articulo.artCodigo}" /> </p:column> <p:column headerText="#{msgs.lDescripcion}" width="250" > <h:outputText value="#{articulo.artDescripcion}" /> </p:column> <p:column headerText="#{msgs.lEfectivo}" width="50"> <h:outputText value="#{articulo.artEfectivo}" /> </p:column> <p:column headerText="#{msgs.bRubro}" width="80"> <h:outputText value="#{articulo.rubro.rubNombre}" /> </p:column> </p:dataTable> </p:overlayPanel> <p:overlayPanel id="moviePanel" for="btnCliente" hideEffect="fade" dynamic="true" style="width:600px" > <p:dataTable id="singleDT" var="cliente" value="#{facturaBean.clientes}" selectionMode="single" selection="#{facturaBean.unCliente}" rowKey="#{cliente.cliCodigo}" paginator="true" rows="10" paginatorPosition="bottom" rowsPerPageTemplate="5,10,15" > <f:facet name="header" > #{msgs.lClientes} </f:facet> <p:ajax event="rowSelect" listener="#{facturaBean.onRowSelect}" update=":formFactura"/> <p:ajax event="rowUnselect" listener="#{facturaBean.onRowUnselect()}" update=":formFactura" /> <p:column headerText="#{msgs.lId}" width="15"> <h:outputText value="#{cliente.cliCodigo}" /> </p:column> <p:column headerText="#{msgs.lRSocial}" width="300"> <h:outputText value="#{cliente.cliRazonsocial}" /> </p:column> <p:column headerText="#{msgs.lRuc}" width="80"> <h:outputText value="#{cliente.cliRuc}" /> </p:column> </p:dataTable> </p:overlayPanel> </h:form>
Todo esto lo traigo de el beanFactura de Tipo Session el cual es este:
Código Java:
Ver original
import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import org.primefaces.event.SelectEvent; import org.primefaces.event.UnselectEvent; import com.jonathan.dao.ArticuloDao; import com.jonathan.dao.ClienteDao; import com.jonathan.dao.FacturaDao; import com.jonathan.dao.impl.ArticuloDaoImpl; import com.jonathan.dao.impl.ClienteDaoImpl; import com.jonathan.dao.impl.FacturaDaoImpl; import com.jonathan.modelo.Articulo; import com.jonathan.modelo.Clientes; import com.jonathan.modelo.DetalleFactura; import com.jonathan.modelo.Factura; @ManagedBean(name = "facturaBean") @SessionScoped private static final long serialVersionUID = -5236757432748581940L; private List<Factura> facturas; private Factura unaFactura = new Factura(); private List<DetalleFactura> detalles; private DetalleFactura detalle = new DetalleFactura(); /*Clientes*/ private List<Clientes> clientes; private Clientes unCliente = new Clientes(); /*Articulo*/ private List<Articulo> articulos; private Articulo unArticulo = new Articulo(); public FacturaBean() { this.facturas = new ArrayList<Factura>(); this.detalles = new ArrayList<DetalleFactura>(); this.clientes = new ArrayList<Clientes>(); this.articulos = new ArrayList<Articulo>(); } /*Constructores para la factura*/ public DetalleFactura getDetalle() { return detalle; } public void setDetalle(DetalleFactura detalle) { this.detalle = detalle; } public List<DetalleFactura> getDetalles() { FacturaDao facturaDao = new FacturaDaoImpl(); this.detalles = facturaDao.listadoD(this.unaFactura.getFacCodigo()); return detalles; } public Factura getUnaFactura() { return unaFactura; } public void setUnaFactura(Factura unaFactura) { this.unaFactura = unaFactura; } public List<Factura> getFacturas() { FacturaDao facturaDao = new FacturaDaoImpl(); this.facturas = facturaDao.listado(); return facturas; } /*Constructores para el cliente*/ public List<Clientes> getClientes() { ClienteDao clienteDao = new ClienteDaoImpl(); this.clientes = clienteDao.listado(); return clientes; } public Clientes getUnCliente() { return unCliente; } public void setUnCliente(Clientes unCliente) { this.unCliente = unCliente; } /*Constructor para el articulo*/ public Articulo getUnArticulo() { return unArticulo; } public void setUnArticulo(Articulo unArticulo) { this.unArticulo = unArticulo; } public List<Articulo> getArticulos() { ArticuloDao articuloDao = new ArticuloDaoImpl(); this.articulos = articuloDao.listado(); return articulos; } public void onRowSelect(SelectEvent event) { FacesMessage msg = new FacesMessage("Seleccionado", (event.getObject().toString())); FacesContext.getCurrentInstance().addMessage(null, msg); } public void onRowUnselect(UnselectEvent event) { FacesMessage msg = new FacesMessage("No Seleccionado", (event.getObject().toString())); FacesContext.getCurrentInstance().addMessage(null, msg); } }
Agradeceria pudieran ayudarme a arreglar esto y como poder agregar articulos al datatable para despues poder registrarlo en la bd...Gracias de antemano