Buenas noches a todos, os expongo mi problema, quiero hacer que, cuando el usuario haga clic un boton, se realizan x acciones y luego se volviera a actualizar para cambiar su estado. Os pongo mi codigo que lo comprenderéis mejor:
<h:panelGroup id="verOfertas" style="width:100%;margin:10px 0px; display: none;">
<p:dataList id="comprasUsuario" emptyMessage="No hay productos registrados" rows="3"
value="#{productosController.cargarPorNegocio()}" var="com">
<p:growl id="messagesVerOfertas" showDetail="true" />
<p:outputLabel style="display: none;" value="#{com.codProducto}" />
<p:outputLabel style="display: none;" value="#{com.productoActivo}" />
<p:graphicImage value="#{com.imagen}" />
<p:outputLabel value="#{com.nombre}" />
<p:commandButton rendered="#{productosController.productoActivo() == false}" value="Activar Oferta"
update="messagesVerOfertas">
<f:setPropertyActionListener target="#{productosController.cod_producto}" value="#{com.codProducto}" />
<f:ajax render="comprasUsuario" event="click" listener="#{productosController.activarProducto()}" />
</p:commandButton>
<p:commandButton rendered="#{productosController.productoActivo() == true}" value="Desactivar Oferta"
update="messagesVerOfertas">
<f:setPropertyActionListener target="#{productosController.cod_producto}" value="#{com.codProducto}" />
<f:ajax render="comprasUsuario" event="click" listener="#{productosController.desActivarProducto()}" />
</p:commandButton>
</p:dataList>
</h:panelGroup>
Aqui la parte del controlador:
public boolean productoActivo(){
items = cargarPorNegocio();
for (Productos prod : items){
if ("1".equals(prod.getProductoActivo())){
return true;
} else {
return false;
}
}
return false;
}
public void activarProducto(){
// Comprobamos que no haya mas productos activos con el mismo user
items = cargarPorNegocio();
for (Productos prod : items) {
if (!prod.getProductoActivo().equals("1")){
activado = ejbFacade.activarProducto(cod_producto);
if (activado == true) {
productoActivo();
message = new FacesMessage("Producto activado con éxito");
} else {
productoActivo();
message = new FacesMessage("Hubo un problema al activar el producto \n"
+ "Por favor, asegurese que no tiene mas productos activos");
}
} else {
message = new FacesMessage("Hubo un problema al activar el producto \n"
+ "Por favor, asegurese que no tiene mas productos activos");
}
}
}
Entonces, como veréis, lo que busco es que salga el mensaje, y que, a su vez, cambie el estado de "rendered" de los botones.
Estoy finalizando la aplicacion web, pero esta parte se me resiste.
¿Alguna idea? Gracias de antemano :D