[RESOLVIDO]Struts 2: Duvida em listagem de dados

Opa :d

Tenho uma tabela em uma jps que lista os dados de um bean. Dentro desse bean, eu aponto para uma entity mas nao esta sendo listado nada. Eu preciso sempre listar a entidade diretamente. Nao tem como o struts2 acessar um objeto dentro de outro atraves de ponto?

Ex:


name="usuarioTO.nome"

E este usuarioTO estar dentro do objeto usuarioForm?

Meu codigo esta da seguinte maneira:

Action

public class ListUsuariosAction extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private List<UsuarioForm> usuarios;
	
	public String execute(){
		UsuarioDelegate usuarioDelegate = new UsuarioDelegate();
		usuarios = new ArrayList<UsuarioForm>(usuarioDelegate.listarUsuarios());
		return SUCCESS;
	}

	public List<UsuarioForm> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<UsuarioForm> usuarios) {
		this.usuarios = usuarios;
	}

Delegate

	public Collection<UsuarioForm> listarUsuarios(){
		UsuarioBO usuarioBO = new UsuarioBO();
		Collection<UsuarioTO> usuarios = usuarioBO.listarUsuarios();
		Collection<UsuarioForm> users = new ArrayList<UsuarioForm>();
		for(UsuarioTO usuarioTO : usuarios) {
			UsuarioForm usuarioForm = new UsuarioForm();
			usuarioForm.setUsuarioTO(usuarioTO);
		}
		return users;
	}

Form

public class UsuarioForm {
	private UsuarioTO usuarioTO;
        // gets e sets
}

jsp

            <s:iterator value="usuarios">
            <tr>
                  <td><s:property value="usuarioTO.nome"/></td>
                  <td>
                  <s:url id="linkAlterar" action="../usuario/carregarUsuario.action" >
                        <s:param name="usuarioForm.usuarioTO.id"><s:property value="id"/> </s:param>
                  </s:url>
				  <s:a href="%{linkAlterar}">Alterar</s:a>                  
                  <s:url id="linkRemover" action="../usuario/removerUsuario.action" >
                        <s:param name="usuarioForm.usuarioTO.id"><s:property value="id"/> </s:param>
                  </s:url>
				  <s:a href="%{linkRemover}">Remover</s:a>
           

                  </td>

            </tr>
    </s:iterator>

Abs

Solucao: usei o proprio usuarioTO.nome e o problema era que a colecao nao estava sendo preenchida corretamente

Vc pode sim utilizar o ponto para acessar objetos dentro de listas, mas vc não precisa por o nome do objeto, apenas coloque lista.nomeAtributo.

Não entendi sua colocação sobre o uso de forms, pois esta é uma técnica do struts 1, no struts 2 vc utiliza actions com getters and setters.

Fala Aleck :smiley:

Eu coloquei apenas pra nao jogar as entidades diretamente na Action. Eu estou com mtas dificuldades no Struts 2, principalmente para trabalhar com enums, entao tenho feito algumas coisas bocais pra ir acertando com o tempo, pq senao, eu fico travado!

Eu vou testar colocar diretamente e ja mando uma resposta.

aleck,

Tentei colocar o nome da lista.atributo, mas nao deu certo :frowning:

Acho que nao consegui explicar o problema. Tenho uma lista, ObjetoA e ObjetoB. Dentro do ObjetoA, eu tenho um atributo do ObjetoB. Ao buscar no banco, eu seto o objetoB dentro do seu atributo no ojbetoA e o objetoA, eu seto na lista.

public Collection<ObjetoA> resultados(){
   Collection<ObjetoB> temp = dao.buscar();
   Collection<ObjetoA> resultados = new ArrayList<ObjetoA>();
   for(ObjetoB objB : temp){
      ObjetoA objA = new ObjetoA();
      objA.setObjB(objB);
      resultados.add(objA);
   }
   return resultados;
}

Vamos supor q dentro do ObjB, eu tenho o atributo id.

Ai na minha jsp, eu queria fazer o segunte:

<s:iterator value="resultados">
   <s:textfield value="objB.id"/>
</s:iterator>

Mas isso nao esta me imprimindo nada, eu devo esatr fazendo algo BEM errado! hehe

Entendeu?