26 de abril de 2011

Diseño Modelado con Seam

Cuando se arma el modelo de las entities en seam, la visibilidad elegida define la navegación generada por el seam-gen.

Tanto para la visibilidad ManyToOne o ManyToMany en las pantallas crea tabs para contemplar esta visibilidad.

Por lo tanto una regla a la hora de elegir la visibilidad del modelo, sería identificar las entities que son más relevantes ( aquellas que llevan ABM ) y que sean ellas quienes tengan visibilidad sobre el resto.

25 de abril de 2011

SEAM page error "duplicate Id for a component selectParent"

Yes, it is a bug. Quick solution:look at seam-home/seam-gen/view/edit.page.xml.ftl
and change the following line:
<s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent' : 'selectParent'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
for:
<s:button id="${'#'}{${homeName}.instance.${property.name} != null ? 'changeParent${property.name}' : 'selectParent${property.name}'}" value="${'#'}{${homeName}.instance.${property.name} != null ? 'Change' : 'Select'} ${property.name}"
Enjoy!!!


Esto soluciona el bug del generador de seam

en mi caso debí cambiar la página 
Esto 
        <div class="actionButtons">
            <s:button id="#{beneficiarioHome.instance.direccionContacto != null ? 'changeParent ' : 'selectParent '}" 
            value="#{beneficiarioHome.instance.direccionContacto != null ? 'Change' : 'Select'} direccionContacto"
                       view="/DireccionContactoList.xhtml">
                <f:param name="from" value="BeneficiarioEdit"/>
            </s:button>

por esto:



        <div class="actionButtons">
            <s:button id="#{beneficiarioHome.instance.direccionContacto != null ? 'changeParentdireccionContacto ' : 'selectParentdireccionContacto '}" 
            value="#{beneficiarioHome.instance.direccionContacto != null ? 'Change' : 'Select'} direccionContacto"
                       view="/DireccionContactoList.xhtml">
                <f:param name="from" value="BeneficiarioEdit"/>
            </s:button>

 Y ESO TAMPOCO ANDUVO ASÍ QUE LE SAQUE EL id="#{bla bla}" 

12 de abril de 2011

Jboss 5.1 eclipse Jboss tools y proyecto Seam vs netbeans jboss 4.2 y EJB+JSF

Utilizar seam reduce los tiempos de desarrollo ?

En la experiencia personal trabajando con jboss 5.1 o 4.2 y eclipse con jbossTools se tienen muchos problemas técnicos que nada tienen que ver con programación a tal punto que se pierde más tiempo arreglando estos problemas que desarrollando en sí.

Ventajas Seam:

mejora el pasaje de parámetros a las páginas
mejora la sintaxis de navegación de páginas
separa las navegaciones por página para tener las cosas más ordenadas
Prácticamente no se utilizan converters
Mejora la interacción con logger
Evita el código replicado que se ocasiona al trabajar en capas separadas
Provee anotaciones para

  • Trabajo con Roles de usuario
  • Biyección
  • Insertar métodos que se disparan durante el ciclo de vida 
  • Demarcación de contextos Begin y End
  • Demarcación de transacciones Rollback
  • Para Manejo de excepciones redirect y HttpError
  • Validación IfInvalid
  • Remoting
  • Seam interceptors 
  • Asincronismo
  • Jsf DataTable selección automática ( sin converters ni cosas raras )

8 de abril de 2011

1 de abril de 2011

Seam Error: entity not mapped jboss tools

query syntax exception not mapped

El Bug esta reportado aca https://issues.jboss.org/browse/JBSEAM-3821

Solución cambiar el persistence.xml y el components.xml de la siguiente forma


--components.xml
<persistence:entity-manager-factory name="bookingDatabase" installed="false"/>
<!-- If Seam loads the persistence unit (JBoss 4.x), the EntityManagerFactory will be resolved from #{bookingDatabase}.
On JBoss AS 5, the EntityManagerFactory is retrieved from JNDI (the binding occurs during application deployment). -->
<persistence:managed-persistence-context name="em" auto-create="true"
entity-manager-factory="#{bookingDatabase}" persistence-unit-jndi-name="java:/bookingEntityManagerFactory"/>
--persistence.xml
<!-- Binds the EntityManagerFactory to JNDI where Seam can look it up.
This is only relevant when the container automatically loads the persistence unit, as is the case in JBoss AS 5. -->
<property name="jboss.entity.manager.factory.jndi.name" value="java:/bookingEntityManagerFactory"/>