You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Nicolás Pace <ni...@gmail.com> on 2007/06/07 19:51:05 UTC

Elements in collection = null in Struts 2 view

Hi everyone!

Description: The problem is that when i debug this webapp, inside the
servlet i can see the elements inside de modelo.Telefonos collection, but
the jsp can't.
In the jsp, the collection only have null's, but the correct number of them.
(if the collection has 3 elements, there are 3 nulls inside it) :S
The database also contains those elements.
Thanks in advance

Nicolás Pace


Struts version: 2.0.6
Hibernate version: 3.1.3 or 3.2
Mapping documents:
---------Modelo.hbm.xml---------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="modelos">
<class name="Modelo">
<id name="id">
<generator class="native"></generator>
</id>

<property name="apellido"></property>
<property name="nombre"></property>
<property name="fechaNacimiento"></property>
<property name="foto"></property>
<property name="turno"></property>

<many-to-one name="escuela" cascade="all" ></many-to-one>

<set name="domicilios" cascade="all" table="modelo_domicilio">
<key column="model_id"/>
<many-to-many column="dom_id" class="modelos.Domicilio" />
</set>

<set name="telefonos" cascade="all" table="modelo_telefono" fetch="join"
lazy="false">
<key column="model_id"/>
<many-to-many column="telefono_id" class="Telefono"/>
</set>

<set name="caracteristicas" cascade="all" table="modelo_caracteristica">
<key column="model_id"/>
<many-to-many column="carac_id" class="modelos.CaracteristicaFisica"/>
</set>

<set name="habilidades" cascade="all" table="modelo_habilidad">
<key column="model_id"/>
<many-to-many column="habilidad_id" class="modelos.Habilidad"/>
</set>

<set name="observaciones" cascade="all" table="modelo_observacion">
<key column="model_id"/>
<many-to-many column="observacion_id" class="modelos.Observacion"/>
</set>

<set name="restricciones" cascade="all" table="modelo_restriccion">
<key column="model_id"/>
<many-to-many column="restricciones_id" class="modelos.Restriccion"/>
</set>

<set name="horariosDisponibles" cascade="all"
table="modelo_horarioDisponible">
<key column="model_id"/>
<many-to-many column="franja_id" class="modelos.FranjaHoraria"/>
</set>

<set name="grupoFamiliar" cascade="all" table="modelo_grupoFamiliar">
<key column="grupoFamiliar_id"/>
<many-to-many column="model_id" class="modelos.Modelo"/>
</set>

</class>
</hibernate-mapping>
-------------------
-----------Telefono.hbm.xml----------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="modelos">
<class name="Telefono">
<id name="id"><generator class="native"></generator></id>
<property name="numero"></property>
</class>
</hibernate-mapping>
------------------------------------

Code between sessionFactory.openSession() and session.close(): Using
OpenSessionInView pattern with ServletFilter suggested here

ModeloAction.java

public class ModeloAction extends ActionSupport {

private Modelo modelo;

...
execute() {
modelo = (Modelo) s.get(Modelo.class, id);

modelo.getTelefonos().size();
modelo.getDomicilios().size();
modelo.getCaracteristicas().size();
modelo.getGrupoFamiliar().size();
modelo.getHabilidades().size();
modelo.getHorariosDisponibles().size();
modelo.getObservaciones().size();
modelo.getRestricciones().size();
}

....
}

Modelo.jsp:
...
<s:iterator value="modelo.telefonos" id="tel">
<s:property value="tel==null"/>
</s:iterator>
...


Full stack trace of any exception that occurs:

Name and version of the database you are using:mysql

The generated SQL (show_sql=true):
Hibernate: select modelo0_.id as id16_1_, modelo0_.apellido as
apellido16_1_, modelo0_.nombre as nombre16_1_, modelo0_.fechaNacimiento as
fechaNac4_16_1_, modelo0_.foto as foto16_1_, modelo0_.turno as turno16_1_,
modelo0_.escuela as escuela16_1_, telefonos1_.model_id as model1_3_,
telefono2_.id as telefono2_3_, telefono2_.id as id9_0_, telefono2_.numero as
numero9_0_ from Modelo modelo0_ left outer join modelo_telefono telefonos1_
on modelo0_.id=telefonos1_.model_id left outer join Telefono telefono2_ on
telefonos1_.telefono_id=telefono2_.id where modelo0_.id=?
Hibernate: select domicilios0_.model_id as model1_1_, domicilios0_.dom_id as
dom2_1_, domicilio1_.dom_id as dom1_3_0_, domicilio1_.calle as calle3_0_,
domicilio1_.numero as numero3_0_, domicilio1_.departamento as
departam4_3_0_, domicilio1_.ciudad as ciudad3_0_ from modelo_domicilio
domicilios0_ left outer join Domicilio domicilio1_ on
domicilios0_.dom_id=domicilio1_.dom_id where domicilios0_.model_id=?
Hibernate: select caracteris0_.model_id as model1_1_, caracteris0_.carac_id
as carac2_1_, caracteris1_.carac_id as carac1_4_0_, caracteris1_.nombre as
nombre4_0_ from modelo_caracteristica caracteris0_ left outer join
CaracteristicaFisica caracteris1_ on
caracteris0_.carac_id=caracteris1_.carac_id where caracteris0_.model_id=?
Hibernate: select grupofamil0_.grupoFamiliar_id as grupoFam1_1_,
grupofamil0_.model_id as model2_1_, modelo1_.id as id16_0_,
modelo1_.apellido as apellido16_0_, modelo1_.nombre as nombre16_0_,
modelo1_.fechaNacimiento as fechaNac4_16_0_, modelo1_.foto as foto16_0_,
modelo1_.turno as turno16_0_, modelo1_.escuela as escuela16_0_ from
modelo_grupoFamiliar grupofamil0_ left outer join Modelo modelo1_ on
grupofamil0_.model_id=modelo1_.id where grupofamil0_.grupoFamiliar_id=?
Hibernate: select habilidade0_.model_id as model1_1_,
habilidade0_.habilidad_id as habilidad2_1_, habilidad1_.id as id7_0_,
habilidad1_.nombre as nombre7_0_ from modelo_habilidad habilidade0_ left
outer join Habilidad habilidad1_ on habilidade0_.habilidad_id=habilidad1_.id
where habilidade0_.model_id=?
Hibernate: select horariosdi0_.model_id as model1_1_, horariosdi0_.franja_id
as franja2_1_, franjahora1_.id as id6_0_, franjahora1_.dia as dia6_0_,
franjahora1_.horaInicio as horaInicio6_0_, franjahora1_.horaFin as
horaFin6_0_ from modelo_horarioDisponible horariosdi0_ left outer join
FranjaHoraria franjahora1_ on horariosdi0_.franja_id=franjahora1_.id where
horariosdi0_.model_id=?
Hibernate: select observacio0_.model_id as model1_1_,
observacio0_.observacion_id as observac2_1_, observacio1_.id as id8_0_,
observacio1_.nombre as nombre8_0_ from modelo_observacion observacio0_ left
outer join Observacion observacio1_ on
observacio0_.observacion_id=observacio1_.id where observacio0_.model_id=?
Hibernate: select restriccio0_.model_id as model1_1_,
restriccio0_.restricciones_id as restricc2_1_, restriccio1_.id as id5_0_,
restriccio1_.nombre as nombre5_0_ from modelo_restriccion restriccio0_ left
outer join Restriccion restriccio1_ on
restriccio0_.restricciones_id=restriccio1_.id where restriccio0_.model_id=?

Re: Elements in collection = null in Struts 2 view

Posted by Nicolás Pace <ni...@gmail.com>.
I will answer myself!!!
The problem was that I was using a wrong ognl expression to access the
iterator element.
The correct expression would be "#tel", not "tel".

Nicolás Pace

On 6/7/07, Nicolás Pace <ni...@gmail.com> wrote:
> Hi everyone!
>
> Description: The problem is that when i debug this webapp, inside the
> servlet i can see the elements inside de modelo.Telefonos collection, but
> the jsp can't.
> In the jsp, the collection only have null's, but the correct number of them.
> (if the collection has 3 elements, there are 3 nulls inside it) :S
>  The database also contains those elements.
>  Thanks in advance
>
>  Nicolás Pace
>
>
>  Struts version: 2.0.6
> Hibernate version: 3.1.3 or 3.2
>  Mapping documents:
>  ---------Modelo.hbm.xml---------------
>  <?xml version="1.0"?>
>  <!DOCTYPE hibernate-mapping PUBLIC
>  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
>  <hibernate-mapping package="modelos">
>  <class name="Modelo">
>  <id name="id">
>  <generator class="native"></generator>
>  </id>
>
>  <property name="apellido"></property>
>  <property name="nombre"></property>
>  <property name="fechaNacimiento"></property>
>  <property name="foto"></property>
>  <property name="turno"></property>
>
>  <many-to-one name="escuela" cascade="all" ></many-to-one>
>
>  <set name="domicilios" cascade="all" table="modelo_domicilio">
>  <key column="model_id"/>
>  <many-to-many column="dom_id" class="modelos.Domicilio" />
>  </set>
>
>  <set name="telefonos" cascade="all" table="modelo_telefono" fetch="join"
> lazy="false">
>  <key column="model_id"/>
>  <many-to-many column="telefono_id" class="Telefono"/>
>  </set>
>
>  <set name="caracteristicas" cascade="all" table="modelo_caracteristica">
>  <key column="model_id"/>
>  <many-to-many column="carac_id" class="modelos.CaracteristicaFisica"/>
>  </set>
>
>  <set name="habilidades" cascade="all" table="modelo_habilidad">
>  <key column="model_id"/>
>  <many-to-many column="habilidad_id" class="modelos.Habilidad"/>
>  </set>
>
>  <set name="observaciones" cascade="all" table="modelo_observacion">
>  <key column="model_id"/>
>  <many-to-many column="observacion_id" class="modelos.Observacion"/>
>  </set>
>
>  <set name="restricciones" cascade="all" table="modelo_restriccion">
>  <key column="model_id"/>
>  <many-to-many column="restricciones_id" class="modelos.Restriccion"/>
>  </set>
>
>  <set name="horariosDisponibles" cascade="all"
> table="modelo_horarioDisponible">
>  <key column="model_id"/>
>  <many-to-many column="franja_id" class="modelos.FranjaHoraria"/>
>  </set>
>
>  <set name="grupoFamiliar" cascade="all" table="modelo_grupoFamiliar">
>  <key column="grupoFamiliar_id"/>
>  <many-to-many column="model_id" class="modelos.Modelo"/>
>  </set>
>
>  </class>
>  </hibernate-mapping>
>  -------------------
>  -----------Telefono.hbm.xml----------------
>  <?xml version="1.0"?>
>  <!DOCTYPE hibernate-mapping PUBLIC
>  "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
> "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
>  <hibernate-mapping package="modelos">
>  <class name="Telefono">
>  <id name="id"><generator class="native"></generator></id>
>  <property name="numero"></property>
>  </class>
>  </hibernate-mapping>
>  ------------------------------------
>
>  Code between sessionFactory.openSession() and session.close(): Using
> OpenSessionInView pattern with ServletFilter suggested here
>
>  ModeloAction.java
>
>  public class ModeloAction extends ActionSupport {
>
>  private Modelo modelo;
>
>  ...
>  execute() {
>  modelo = (Modelo) s.get(Modelo.class, id);
>
>  modelo.getTelefonos().size();
>  modelo.getDomicilios().size();
>  modelo.getCaracteristicas().size();
>  modelo.getGrupoFamiliar().size();
>  modelo.getHabilidades().size();
>  modelo.getHorariosDisponibles().size();
>  modelo.getObservaciones().size();
>  modelo.getRestricciones().size();
>  }
>
>  ....
>  }
>
>  Modelo.jsp:
>  ...
>  <s:iterator value="modelo.telefonos" id="tel">
>  <s:property value="tel==null"/>
>  </s:iterator>
>  ...
>
>
>  Full stack trace of any exception that occurs:
>
>  Name and version of the database you are using:mysql
>
>  The generated SQL (show_sql=true):
> Hibernate: select modelo0_.id as id16_1_, modelo0_.apellido as
> apellido16_1_, modelo0_.nombre as nombre16_1_, modelo0_.fechaNacimiento as
> fechaNac4_16_1_, modelo0_.foto as foto16_1_, modelo0_.turno as turno16_1_,
> modelo0_.escuela as escuela16_1_, telefonos1_.model_id as model1_3_,
> telefono2_.id as telefono2_3_, telefono2_.id as id9_0_, telefono2_.numero as
> numero9_0_ from Modelo modelo0_ left outer join modelo_telefono telefonos1_
> on modelo0_.id=telefonos1_.model_id left outer join
> Telefono telefono2_ on
> telefonos1_.telefono_id=telefono2_.id where modelo0_.id=?
> Hibernate: select domicilios0_.model_id as model1_1_, domicilios0_.dom_id as
> dom2_1_, domicilio1_.dom_id as dom1_3_0_, domicilio1_.calle as calle3_0_,
> domicilio1_.numero as numero3_0_, domicilio1_.departamento as
> departam4_3_0_, domicilio1_.ciudad as ciudad3_0_ from modelo_domicilio
> domicilios0_ left outer join Domicilio domicilio1_ on
> domicilios0_.dom_id=domicilio1_.dom_id where
> domicilios0_.model_id=?
> Hibernate: select caracteris0_.model_id as model1_1_, caracteris0_.carac_id
> as carac2_1_, caracteris1_.carac_id as carac1_4_0_, caracteris1_.nombre as
> nombre4_0_ from modelo_caracteristica caracteris0_ left outer join
> CaracteristicaFisica caracteris1_ on
> caracteris0_.carac_id=caracteris1_.carac_id where
> caracteris0_.model_id=?
> Hibernate: select grupofamil0_.grupoFamiliar_id as grupoFam1_1_,
> grupofamil0_.model_id as model2_1_, modelo1_.id as id16_0_,
> modelo1_.apellido as apellido16_0_, modelo1_.nombre as nombre16_0_,
> modelo1_.fechaNacimiento as fechaNac4_16_0_, modelo1_.foto as foto16_0_,
> modelo1_.turno as turno16_0_, modelo1_.escuela as escuela16_0_ from
> modelo_grupoFamiliar grupofamil0_ left outer join Modelo modelo1_ on
> grupofamil0_.model_id=modelo1_.id where
> grupofamil0_.grupoFamiliar_id=?
> Hibernate: select habilidade0_.model_id as model1_1_,
> habilidade0_.habilidad_id as habilidad2_1_, habilidad1_.id as id7_0_,
> habilidad1_.nombre as nombre7_0_ from modelo_habilidad habilidade0_ left
> outer join Habilidad habilidad1_ on
> habilidade0_.habilidad_id=habilidad1_.id where
> habilidade0_.model_id=?
> Hibernate: select horariosdi0_.model_id as model1_1_, horariosdi0_.franja_id
> as franja2_1_, franjahora1_.id as id6_0_, franjahora1_.dia as dia6_0_,
> franjahora1_.horaInicio as horaInicio6_0_, franjahora1_.horaFin as
> horaFin6_0_ from modelo_horarioDisponible horariosdi0_ left outer join
> FranjaHoraria franjahora1_ on
> horariosdi0_.franja_id=franjahora1_.id where
> horariosdi0_.model_id=?
> Hibernate: select observacio0_.model_id as model1_1_,
> observacio0_.observacion_id as observac2_1_, observacio1_.id as id8_0_,
> observacio1_.nombre as nombre8_0_ from modelo_observacion observacio0_ left
> outer join Observacion observacio1_ on
> observacio0_.observacion_id=observacio1_.id where
> observacio0_.model_id=?
> Hibernate: select restriccio0_.model_id as model1_1_,
> restriccio0_.restricciones_id as restricc2_1_, restriccio1_.id as id5_0_,
> restriccio1_.nombre as nombre5_0_ from modelo_restriccion restriccio0_ left
> outer join Restriccion restriccio1_ on
> restriccio0_.restricciones_id=restriccio1_.id where
> restriccio0_.model_id=?
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org