[Struts] Acesso a atributos de bean

Olá:

Suponham os seguintes beans:

public class NotaFiscal {
   private int codigo;
   private Pessoa dono;

   // Getters e Setters ...
}

public class Pessoa {
   private String rg;
   private String nome;

   // Getters e Setters
}

Na minha página com as tags do Struts quero acessar as propriedades de NotaFiscal e também do dono dessa nota. Para código é simples:

<bean:write name="nota" property="codigo"/>

E quanto a dono? Se eu fizer simplesmente:

<bean:write name="nota" property="dono"/>

Suponho que vá exibir o valor do toString() do bean Pessoa. Mas quero exibir o nome desse dono.
Há duas maneiras que consegui imaginar:

  1. Usando JSTL:
<c:out value="${nota.dono.nome}"/>
  1. Jogando dono como um atributo do request (usando Request.setAttribute(String, Object) no Action) ou em seu respectivo FormAction. Daí poderei usar a tag <bean:write>:
&lt;bean&#58;write name=&quot;dono&quot; property=&quot;nome&quot;/&gt;

Entretanto queria acessar o nome do dono diretamente com a tag <bean:write>. Seria algo como:

&lt;bean&#58;write name=&quot;nota.dono&quot; property=&quot;nome&quot;/&gt;

Mas tenho a impressão que isso não daria certo. Alguém sasbe como fazer?

Grato,

<bean:write name=“nota” property=“dono.nome”/>

isto funciona legal :slight_smile:

mas se tu puder utilizar LSTL acho que seria melhor :slight_smile:

Urubatan:

Você não quis escrever JSTL? De qualquer forma, a orientação que recebi é usar as tags do Struts o máximo possível, para manter um padrão. Há a extensão chamada Stritus-EL. Entretanto, não há ainda uma versão de <bean:write> que use Expression Language. Lembrando que uso Tomcat 4.1.29, que ainda usa a especificação JSP 1.2, sem a EL incorporada como na especificação 2.0 (implementada pelo Tomcat 5.x).

Grato,

assim:

&lt;bean&#58;write name=&quot;nota&quot; property=&quot;dono.nome&quot;/&gt; 

ai o Struts faz getDono().getNome() :slight_smile:

Ricardo:

Obrigado pela sugestão. Funcionou! :smiley: Uma outra coisa que funciona é usar a tag bean:define, Veja:

&lt;bean&#58;define id=&quot;proprietario&quot; name=&quot;pessoa&quot; property=&quot;dono&quot;/&gt;

E daí basta fazer:

&lt;bean&#58;write name=&quot;proprietario&quot; property=&quot;nome&quot;/&gt;

Grato,