Iterate (Struts) e beans Hibernate

4 respostas
tads

Boa tarde pessoal, tudo bom?

Bom, estou listando vários usuários de um sistema web usando Struts 1.1
e Hibernate 2.0.2.

O bean é o User e tem os seguintes atributos:
Código:

public class User implements Serializable 
{ 
   private String name; 
   private String login; 
   private String password; 

   private Company company; 

  // getters e setters 
}

Na base de dados, a tabela users permite que a coluna
de empresa de usuário seja null, ou seja, um usuário pode ser
“especial” ou usuário master do sistema todo, então ele
não teria uma empresa associada.

Acontece que quando vou executar o iterate numa página jsp,
o atributo company do bean User está null, dando erro
no jsp.

Pelo q eu testei aki, se eu instanciar de alguma forma
o atributo company do bean User, não deixando ele null (qdo dá erro),
daí funciona corretamente, mas to fazendo isso no Action (eca, acho q aki nao é uma boa)

No bean User, instanciando diretamente o atributo company,
o Hibrnate não deixa, falando q atributo não pode ser instanciado.

Então, eu gostaria de saber:
Qual seria a maneira mais adequada para eu resolver este problema?

alguém tem alguma dica a respeito disso ou já passou por isso??

valew,

abraço!!!

4 Respostas

ricardolecheta

“tads”:
No bean User, instanciando diretamente o atributo company,
o Hibrnate não deixa, falando q atributo não pode ser instanciado

como assim?

vc pode usar a taglib <logic:notEmpty name=“objeto” property=“x”>
para verificar se um campo está nulo.

posta aqui o seu jsp que vc está tentando fazer…

tads

ai vai o iterate que tá no jsp:

&lt;logic&#58;iterate id="user" name="listFindUsers" property="page" type="manager.User" &gt;
   &lt;tr bgcolor="#ECECF4" &gt; 
        &lt;td width="100" class="tab_linha"&gt;&lt;font class="font_tab_linha"&gt;&amp;nbsp;&lt;bean&#58;write name="user" property="login" filter="false"/&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
        &lt;td width="80" class="tab_linha"&gt;&lt;font class="font_tab_linha"&gt;&amp;nbsp;&lt;bean&#58;write name="user" property="name" filter="false"/&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
        &lt;td width="90" class="tab_linha"&gt;&lt;font class="font_tab_linha"&gt;&amp;nbsp;&lt;bean&#58;write name="user" property="cpf" filter="false"/&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
        &lt;td width="69" class="tab_linha"&gt;&lt;font class="font_tab_linha"&gt;&amp;nbsp;&lt;bean&#58;write name="user" property="jobFunction" filter="false"/&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
         &lt;td width="72" class="tab_linha"&gt;&lt;font class="font_tab_linha"&gt;&amp;nbsp;&lt;bean&#58;write name="user" property="company.name" filter="false"/&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
    &lt;/tr&gt;						 &lt;/logic&#58;iterate&gt;

Como vc pode ver, tem um atributo “company.name”,
mas tem usuário que não tem empresa associada a ele,
então este atributo está null. Qdo vou no log ele mostra o seguinte:

java.lang.IllegalArgumentException&#58; Null property value for 'company'

isso somente acontece quando o usuário na tem empresa associdada a ele.

Falow,

obrigado!!!

abraço

ricardolecheta

antes de acessar o objeto verifique se ele nao está nulo:

&lt;logic&#58;notEmpty name="user" property="company"&gt;
  &lt;bean&#58;write name="user" property="company.name" filter="false"/&gt;
&lt;/logic&#58;notEmpty&gt;
tads

Massaa!! assim tá bão d+

valew,

abraço

Criado 27 de novembro de 2003
Ultima resposta 27 de nov. de 2003
Respostas 4
Participantes 2