lunes, 26 de agosto de 2013

Consideraciones de Roo (Visualizar, proteger campos de una vista)

Una  de las cosas que me atrae de los blogs es la facilidad de construir ayuda memorias en linea. Como Roo tiene varias "recetas" que nos ayudan a aliviar el proceso de desarrollo. Colocaré en esta entrada algunas de las recetas que tengo desperdigadas a fin de unificarlas.....

El primero de ellos se refiere a "acondicionar una vista". Supongamos que tenemos una entidad que se llama Paises y ademas tenemos también una vista Create.jspx para realizar el CRUD.
Dentro de esta vista tenemos una entrada para administrar el campo descripción.

<ul class="formInline" id="ul_com_oleum_cesgar_Pais_descripcion">
  <li class="size120" id="li_com_oleum_cesgar_Pais_descripcion">
    <field:input field="descripcion" id="c_com_oleum_cesgar_Pais_descripcion" z="VUvdIXOtPyuLwnfoxE3P3sN1znw="/>
   </li>
</ul>


A todas estas suposiciones le agregamos que no queremos que aparezca el campo "descripcion". Para ello solo tenemos que agregar Render= "false" como sigue :

<ul class="formInline" id="ul_com_oleum_cesgar_Pais_descripcion">
  <li class="size120" id="li_com_oleum_cesgar_Pais_descripcion">
    <field:input Render= "false" field="descripcion" id="c_com_oleum_cesgar_Pais_descripcion" z="VUvdIXOtPyuLwnfoxE3P3sN1znw="/>
   </li>
</ul>

Actualizamos la página y ya no encontramos el campo. De esta manera lo "invisibilizamos".
También podríamos querer verlo e impedir su modificación. Para ello agregamos Diabled= "true" de la siguiente manera;

<ul class="formInline" id="ul_com_oleum_cesgar_Pais_descripcion">
  <li class="size120" id="li_com_oleum_cesgar_Pais_descripcion">
    <field:input Diabled= "true" field="descripcion" id="c_com_oleum_cesgar_Pais_descripcion" z="VUvdIXOtPyuLwnfoxE3P3sN1znw="/>
   </li>
</ul>

Así podemos ocultar o proteger un campo. No esta de mas decir que estas modificaciones al aplicarse en la vista no necesitan compilación ni nada similar, solo actualizando la página y deberíamos ver las modificaciones (tengamos en cuenta limpiar el historial del navegador en caso de que no se vean las modificaciones).

SI queremos que estas modificaciones perduren en el tiempo y Roo no las elimine con algún Scaffolding propio o ajeno. Tenemos que cambiar lo siguiente:


z="VUvdIXOtPyuLwnfoxE3P3sN1znw="

Por 

z="user-managed"

De esta manera le informamos a Roo que dicho campo sera administrado por nosotros y no lo tenga en cuenta en algún scaffold posterior a nuestras modificaciones.