Passando parâmetros pela url para uma action no struts2

Como eu posso passar parâmetros na url para uma action?
E como eu posso colocar valores de um <s:itarator> para esta url que irá passar parâmetros para uma action?

<s:iterator>
   <s:url id="url" action="suaaction">
      <s:param name="nomedoparametro" value="valordoparametro" /> //aqui voce pode acessar qualquer atributo do corrente da iteração
   </s:url>
   <a href="%{url}">Link</a>
</s:iterator>

Isso ajuda?

Ajuda sim.
E como eu pego este parâmetro na minha action? E esse iterator é o retorno de uma action, como eu posso colocar este valor dentro do parametro da url?

Ex.:

<s:iterator value="object">
   <s:property value="name" />
   <s:url id="url" action="suaAction">
       <s:param name="param" value="<s:property value="id" />" />
   </s:url>
   <s:a href="%{url}">Link</s:a>
</s:iterator:

Eu sei que o modo acima, na parte do <s:property value=“id”, está errado, mas você saberia como chegar neste resultado?


Você, por exemplo, iterando uma lista de pessoas físicas, e quer criar um link para alterar. Cada elemento (instância de PessoaFisica) da lista de pessoas físicas tem o atributo id, assim você acessa ele e passa o valor.

Poderia fazer outras coisas como:
[code]
<s:param name="idPessoa" value="id" />
<s:param name="matriculaPessoa" value="matr" />
<s:param name="nomePessoa" value="nome" />
[/code]

[code]
public class PessoaFisica {
   private Long id;
   private String matr;
   private String nome;

   //getters and setters
}
[/code]

[code]
public class SuaAction extends AlgumaActionSupport {
   private List<PessoaFisica> pessoasFisicas;

   ...
}[/code]

[code]
 <s:iterator value="pessoasFisicas">   
    <s:url id="url" action="suaAction">  
        <s:param name="idPessoa" value="id" />  
    </s:url>  
    <s:a href="%{url}">editar</s:a>  
</s:iterator>
[/code]

Algo assim.

Você, por exemplo, iterando uma lista de pessoas físicas, e quer criar um link para alterar. Cada elemento (instância de PessoaFisica) da lista de pessoas físicas tem o atributo id, assim você acessa ele e passa o valor.

Poderia fazer outras coisas como:

<s:param name="idPessoa" value="id" />
<s:param name="matriculaPessoa" value="matr" />
<s:param name="nomePessoa" value="nome" />
public class PessoaFisica {
   private Long id;
   private String matr;
   private String nome;

   //getters and setters
}

[code]
public class SuaAction extends AlgumaActionSupport {
private List pessoasFisicas;


}[/code]

 <s:iterator value="pessoasFisicas">   
    <s:url id="url" action="suaAction">  
        <s:param name="idPessoa" value="id" />  
    </s:url>  
    <s:a href="%{url}">editar</s:a>  
</s:iterator>

Algo assim.

E como eu pego o idPessoa na action?

A action para onde vai ser enviado o idPessoa? Cria o atributo na action métodos get e set.

Acabei fazendo isto, mas usando o id da pessoa mesmo…hehehhe
Aproveitando este tópico, tenho percebido que a minha aplicação está consumindo muita memória, acho que um dos motivos é quando eu retorno alguns dados do banco.
Como eu faço para liberar a memória?
Estes dados parecem que não são apagados, só quando eu paro o tomcat.

Quem libera a memória é o garbage collector. Você até pode chamar ele, mas não existe garantia de que ele vai ser executado no momento em que chamou. Tente aumentar a memória disponível para a VM, mexer na configuração do tomcat (no script de inicialização, lá você pode alterar a memória disponível), procure aqui no próprio GUJ e na internet, muita gente tem desses problemas.

Eu vou fazer isso, aumentar a memória para o tomcat. Mas isso esta estranho, porque a minha apicação está consumindo mais de 150MB…
E vou tentar apagar também, porque conforme a aplicação fica aberta eu vejo que a memória da máquina vai indo embora, em nenhum momento ela é apagada.
Isso também poderia ser alguma configuração do struts?