Desde que existe la Web 2.0, se puso de moda usar Ajax para darle un aspecto de escritorio a nuestras aplicaciones Web, una de las mas usadas, el el LOADING AJAX, en PHP es facil con las librerias Prototype y jQuery, pero en Java es otra historia, pero no, no crean, desde que aparecio Richfaces, el gallo canta mas temprano, les presento el
a4j:status es un indicador de una petición Ajax que tiene 2 estados, iniciado y detenido. El estado de inicio indica que una peticion Ajax esta en progreso, cuando la respuesta Ajax viene de regreso corresponde el componente cambia al estado detenido.
<a4j:region id="editando"> <h:inputText value="#{userBean.name}"> <a4j:support event="onkeyup" reRender="outname" /> </h:inputText> <a4j:status for="editando" onstart="Richfaces.showModalPanel('ajaxLoadingModalBox',{width:100, top:100})" onstop="Richfaces.hideModalPanel('ajaxLoadingModalBox')"></a4j:status> </a4j:region> <rich:modalPanel id="ajaxLoadingModalBox" minHeight="100" minWidth="200" height="80" width="400" zindex="100"> <h2><h:outputText value="Validando..."> </h:outputText></h2> </rich:modalPanel>
- La propiedad for, indica con que region va a trabajar el indicador de estado, en nuestro ejemplo se llama “editando”, cuando se ejecute la peticion Ajax del inputText con el a4j:support, el buscara un indicador de estado para la región a la cual pertenece el input, este sera nuestro indicador el que sea invocado.
- Las propiedades onstart y onstop, estan encargadas de ejecutar lo que en ellas este indicadas, pueda ser un bean, o codigo JavaScript, pero en nuestro caso usamos un componente ModalPanel “ajaxLoadingModalBox”, que aparecera mientras el indicador de estado pasa de Iniciado a Detenido.


hector00
on Sep 8th, 2009
@ 10:32:
HOLA QUE TAL.
Es muy bueno tu ejemplo, y funciona correctamente. Solo que tengo un problema en mi implementación, quiero que haga lo mismo pero cuando mando a llamar un método que me genera un reporte en pdf, hasta el momento sólo me muestra el mensaje pero ya no lo cierra. ¿Qué puedo hacer?
Gracias, saludos
jotadeveloper
on Sep 8th, 2009
@ 14:50:
Pues ……. lo veo algo opaco, podes compartir algo de código? ….. tal vez asà ..
hector00
on Sep 9th, 2009
@ 10:25:
Hola que tal.
Este es mi código en la vista:
<a:commandButton id=”btnReportea” value=”Imprimir Reporte”
style=” width : 126px;” action=”#{ReporteORFIS.reporteORFISpdf}”>
<a:status for=”editando”
onstart=”Richfaces.showModalPanel('ajaxLoadingModalBox',{width:100, top:100})”
onstop=”Richfaces.hideModalPanel('ajaxLoadingModalBox')”>
//el modal es el de tu ejemplo
<rich:modalPanel id=”ajaxLoadingModalBox” minHeight=”100″
minWidth=”200″ height=”80″ width=”400″ zindex=”100″>
<h2><h:outputText value=”Validando…”>
</h:outputText></h2>
</rich:modalPanel>
//En el bean… ReporteORFIS.reporteORFISpdf este es parte de su código:
public String reporteORFISpdf() {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context
.getExternalContext().getRequest();
setHost(“/” + request.getServerName() + “:” + request.getServerPort());
if (tipoBienPatrimonial == 1) {
//codigo
} else if (tipoBienPatrimonial == 2) {
//codigo
} else if (tipoBienPatrimonial == 3) {
//codigosemovientes”);
} else if (tipoBienPatrimonial == 4 || tipoBienPatrimonial == 5
|| tipoBienPatrimonial == 6 || tipoBienPatrimonial == 7) {
//codigo
} else {
//codigo
}
return “/muebles/reporteORFISpdf.xhtml”;
}