Struts2: é recomendável estender ActionSupport? (já que funciona sem)

4 respostas
pgnt

Estou migrando uma aplicação do struts1 para o 2.

Nos exemplos em fóruns e sites, vejo sempre a classe Action estendendo a ActionSupport porém, segundo a tutorial que tenho em mãos, diz não ser necessário, e foi como iniciei a migração (realizei alguns testes e tudo está se ajustando).

Eu precisei importar “import org.apache.struts2.ServletActionContext;” para trabalhar com o request

Não usei ‘getters’ e ‘setters’ na action (sei q o struts2 pega direto fazendo assim) pois a aplicação antiga já pega os parâmetros estilo servlet mesmo - request.getParameter(“xxx”)

Segundo este contexto, faço bem em não estender as actions?
Existe alguma vantagem em extender ActionSupport (algum padrão de projeto intrínseco por exemplo que ele incorpora à Action)?

grato

4 Respostas

Herrera

na minhas classes eu sempre estendo para uma classe intermediária, como por exemplo :

public class AssociacaoEntidadeAction extends GenericAction

e na classe GenericAction eu estendo para

public abstract class GenericAction extends ActionSupport {

A estensão para a classe ActionSupport não é obrigatoria, mas lá contem varios metodos uteis que vc provavelmente vai utilizar (dê uma olhada no fonte dele) . Já a classe GenericAction é um classe que é herdada e possui varios métodos em comum que podem ser utilizadas por todas as classes de sua aplicacao. Sugiro vc sempre criar essa classe, mesmo vazia inicialmente, pois futuramente vc vai precisar com certeza .

Herrera

W

Nos exemplos em fóruns e sites, vejo sempre a classe Action estendendo a ActionSupport porém, segundo a tutorial que tenho em mãos, diz não ser necessário, e foi como iniciei a migração (realizei alguns testes e tudo está se ajustando).
Cuidado pois a classe ActionSupport possui os métodos e atributos que retornam mensagens de erros, errso de validação, ResourceBlunde etc. Procure sempre extender a sua classe como o Herrera citou.
sds.

pgnt

Ok, no caso as validações estão sendo feitas por um método da classe de negócio, não estou usando o framework pra isso.

Gostei da idéia de estender uma classe genérica, farei isso (só não vou estender a genérica à ActionSupport pois não preciso agora, poupará recurso).

Agora, estou com um problema de acentuação semelhante ao que o Herrera teve neste tópico
http://www.guj.com.br/posts/list/66076.java#348089

O banco de dados está com LATIN1 e as páginas/XMLs da aplicação está com o encoding=“iso-8859-1” e ainda assim gera exception quando uso acentuação para inserir ou atualizar dados no banco:
[color=red]encoding “UTF8” has no equivalent in “LATIN1”[/color]

Estou pesquisando ainda (antes de postar no fórum), se souberem matar essa também agradeço novamente.

Obrigado!

idev4web

Quando usamos extends em qualquer classe ganhamos os beneficios da herança: por exemplo o tratamento comum de tipos que tem relacao de herança.
Alem da transferencias das caracteristica do objeto pai.
Ate facilita na codificacao, pois as IDE (eclispe e netbeans) fazem as associaçoes

Criado 4 de setembro de 2008
Ultima resposta 5 de set. de 2008
Respostas 4
Participantes 4