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?