Motivación: Quiero reducir el tamaño de la página cuando se accede, así que pensé que el renderizado lento en modalPanels ayudaría. La idea es presentar el modalPanel cuando el usuario haga clic en el enlace que lo muestra.modalPanel lazy rendering cuando se muestra
Quiero renderizar vago en rich:modalPanel
cuando se hace clic en el enlace para mostrarlo. Para lograr esto que he encontrado una manera:
Código del modalPanel
, envuelto dentro de una
<a4j:outputPanel id="a4jPanel">
<rich:modalPanel id="panel" rendered="#{bean.renderPanel}">
<!-- here modalPanel things -->
</rich:modalPanel>
</a4j:outputPanel>
Código a4j:outputPanel
public boolean isRenderPanel() {
return renderPanel; //default value is false;
}
public void setRenderPanel(boolean value){
this.renderPanel=value;
}
public setRenderFalse(){
this.setRenderPanel(false);
}
Código de la página en la que se invoca:
<a4j:form>
<a4j:jsFunction name="setRenderFalse" action="#{user.setRenderFalse}"/>
<a4j:commandLink value="render and show" oncomplete="Richfaces.showModalPanel('panel');setRenderFalse();" reRender="a4jPanel">
<f:setPropertyActionListener target="#{user.renderPanel}" value="true" />
</a4j:commandLink>
</a4j:form>
Problemas:
El modalPanel tiene que ajustarse dentro de un
a4j:outputPanel
porque reRendering directamente la modalPanel no funciona (que nunca he entendido por qué).Después de representarlo, se necesita una solicitud adicional para establecer el valor de representación en falso (el bean tiene una sesión de ámbito). De lo contrario, si volvemos a cargar la página no habría ninguna representación diferida porque el valor se estableció en
true
.frijol El respaldo tiene que manejar una propiedad para mantener el estado de cada modalPanel, aunque esta propiedad se establece en
true
cada vez que se hace clic en el enlace y se puso afalse
cuando la solicitud esté terminado. Intenté mantener el estadorendered
con variables JS, pero parece que no funciona (solo se leen una vez que se carga la página y nunca más).
¿Alguna forma más elegante de hacer esto?
Parece una solución limpia. Voy a probarlo. Si funciona, la recompensa es suya :) – pakore
¡Funcionó muy bien! Gracias. – pakore
Genial, me alegro de que haya ayudado. –