Tengo un elemento de nivel de bloque, un contenedor, que debe estar oculto cuando sus elementos secundarios de Wicket (botones) están ocultos. En otras palabras, si cualquier botón secundario está visible, el contenedor debería estar visible.Wicket contenedor que está oculto cuando todos sus componentes secundarios están ocultos
Anteriormente, uno de los botones siempre estaba visible si había algún botón, así que usé ese botón para controlar la visibilidad de un <wicket:enclosure>
, manejando todo esto puramente en el lado HTML.
Ahora, las especificaciones han cambiado para que los botones se puedan ocultar/visualizar de forma independiente, por lo que un simple armario ya no funcionará (creo).
lo tengo trabajando con algo como esto:
HTML:
<wicket:container wicket:id="downloadButtons">
<wicket:message key="download.foo.bar"/>:
<input type="button" wicket:id="excelDownloadButton" wicket:message="value:download.excel"/>
<input type="button" wicket:id="textDownloadButton" wicket:message="value:download.text"/>
<!-- etc ... -->
</wicket:container>
Java:
WebMarkupContainer container = new WebMarkupContainer("downloadButtons");
// ... add buttons to container ...
boolean showContainer = false;
Iterator<? extends Component> it = container.iterator();
while (it.hasNext()) {
if (it.next().isVisible()) {
showContainer = true;
break;
}
}
addOrReplace(container.setVisible(showContainer));
Pero el lado de Java es ahora tipo de verbosa y feo, y yo estaba pensando en , probablemente haya una manera más limpia de hacer lo mismo. ¿Esta ahí? ¿Puede de alguna manera "automáticamente" ocultar un contenedor (con todas sus marcas adicionales) cuando ninguno de sus componentes secundarios está visible?
(Wicket 1.4, si importa.)
Agradable; este enfoque era nuevo para mí, y ahora que lo implementé en nuestro código, es bastante elegante también. (La página original está muy simplificada, y esto promueve la reutilización). – Jonik