Una vez, con el Service Builder, hayas creado tus entidades y la implementación del modelo de negocio de tu portal, es interesante especificar como se deberían presentar los datos al usuario (de las entidades creadas).

Con los Model Hints puedes especificar esta información y, además, puedes marcar el tamaño de los campos en la base de datos.

Estas modificaciones se han de realizar en el archivo ‘portlet-model-hints.xml‘ que se encuentra en la ruta: ‘docroot/WEB-INF/src/META-INF’.

Los Model Hints te permiten configurar la librería de tags AlloyUI ‘aui’ para mostrar los campos de tu modelo de negocio.Ejemplo de usoCon esta entidad creada con el Service Builder (archivo ‘service.xml’): 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//ES"
      "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="com.proliferay.servicebuilder">
    <author>duvidu</author>
    <namespace>PERSONAS</namespace>
    <entity name="Persona" table="PERSONA" local-service="true" remote-service="true">
        <column name="personaId" type="long" primary="true" />
        <column 
name="Nombre" type="String" />
        <column 
name="Apellido" type="String" />
        <column 
name="DNI" type="String" />
        <column 
name="fechaNacimiento" type="Date" />
        <column 
name="observaciones" type="String" />
    </entity>
</service-builder>

Se autogenera el archivo ‘portlet-model-hints.xml’:

<?xml version="1.0"?>
<model-hints>
    <model name="
com.proliferay.servicebuilder.model.com.profilerayersona" 
           table="PERSONA" local-service="true" remote-service="true">
        <column name="personaId" type="long" primary="true" />
        <column 
name="Nombre" type="String" />
        <column 
name="Apellido" type="String" />
        <column 
name="DNI" type="String" />
        <column 
name="fechaNacimiento" type="Date" />
        <column 
name="observaciones" type="String" />
    </entity>

</model-hints>

Quiero limitar en un campo fecha que los usuarios solo puedan introducir fechas pasadas, como la de nacimiento. Entonces en el archivo ‘portlet-model-hints.xml‘ marcamos para el campo ‘fechaNacimiento’ un hint llamado ‘year-range-future’ a falso:

<?xml version="1.0"?>
<model-hints>
    <model name="
com.proliferay.servicebuilder.model.com.profilerayersona" 
           table="PERSONA" local-service="true" remote-service="true">
        <column name="personaId" type="long" primary="true" />
        <column 
name="Nombre" type="String" />
        <column 
name="Apellido" type="String" />
        <column 
name="DNI" type="String" />
        <column 
name="fechaNacimiento" type="Date" >
             <hint name="year-range-future">false</hint>
        </
column>
        <column 
name="observaciones" type="String" />
    </entity>

</model-hints>

Para que este cambio sea efectivo se ha de hacer un Build Service.

Así, si tuviéramos un formulario para introducir fechas para el nacimiento con los tags aui, no permitiría introducir fechas futuras.

Como hemos dicho, con los Model Hints también puedes modificar el tamaño de un campo en la Base de Datos. Si fuera el caso de que necesitáramos que el campo ‘observaciones’ fuera más grande que el por defecto entonces usamos el ‘max-length’:

<?xml version="1.0"?>
<model-hints>
    <model name="
com.proliferay.servicebuilder.model.com.profilerayersona" 
           table="PERSONA" local-service="true" remote-service="true">
        <column name="personaId" type="long" primary="true" />
        <column 
name="Nombre" type="String" />
        <column 
name="Apellido" type="String" />
        <column 
name="DNI" type="String" />
        <column 
name="fechaNacimiento" type="Date" >
             <hint 
name="year-range-future">false</hint>
        </
column>
        <column 
name="observaciones" type="String" >
             <hint name="max-length">400</hint>
        </
column>
    </entity>
</
model-hints>

Recuerda hacer el Build Service y el Deploy para que se propague el cambio a la Base da Datos y podrás ver como el campo ha cambiado.

La lista completa de Model Hints es la siguiente:

modelhints.png

¡Espero que os sirva de ayuda!


Leave a Reply

Your email address will not be published. Required fields are marked *