Como validar uma sessão no struts e como usar dispath Action

E aí galera beleza?
TEnho 2 duvidas sobre struts.
Uma delas é o seguinte: eu quero criar um action que seje herdado por todos os outros actions, para que a validação de seçcão seja feita apenas nele. Mas pelo que eu estava pensando vou ter que criar um método nesse método pai que recebe como parametro um request e ele faz a verificação da sessão mas, o problema é que todo action vai ter que chamar esse método aí acho que não fica legal. Gostaria que de alguma forma quando eu chamasse um filho do action acima, fosse verificada a sessão sem que eu explicitamente precesasse ficar chamando métodos do action pai.

A outra duvida é: Quando eu estou utilizando o DispatchAction para eu poder chamar um método no action, no atributo parameter do struts-config, o valur que4 coloco não é o nome do método e sim o nome do parametro que vai receber como valou o nome do método, tipo se eu quiser chamar o método selecionaUsuarios na action eu tenho que passar por get parametro=selecionaUsiarios. Isso é ruim, eu gostaria de colocar o nome do método no atributo parameter do struts-config e quando chamar o .do correspondente cair nesse método, sem passar nada no get.
Não se se fui muito claro nas minhas duvidas mas se puderem me ajudar eu agradeço. Obrigado!

Olá. Podes criar um filtro que implemente HttpSessionListener. Assim:

public class SessionCop implements Filter, HttpSessionListener {

    public void init(FilterConfig filterConfig) {}
    public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) { }
    public void destroy() {}

    public void sessionCreated(HttpSessionEvent se) {}
    public void sessionDestroyed(HttpSessionEvent se) {}

}

No segundo caso tu acaba caindo na implementação de Action´s simples, porque tu não precisa especificar nome de método. De qualquer forma desconheço se isto pode ser usado internamente pelo struts-config ao invéz de passar explicitamente pela URL (algo híbrido, se entendi) Se tu descobrir se há uma maneira de fazer isto posta aí.

T+

eu recomendaria o pattern template method. Nele você definiria o seguinte:

Action Pai:
execute(args) {
//Faz as validações e regras de negocio necessárias
//como iniciar transações e etc…
performAction(args);
//Trata exceptions e comita transações
}

abstract performAction(args);

Assim vc implementaria o performAction em todas as actions filhas. :slight_smile:

E aí galera beleza?

Então gconcon, parace interessante esse patern, vou dar uma estudada pra ver se entendo melhor.

Agora quanto ao filtro iktuz, se eu o fizer em todas as minhas actions vou ter que criar um objeto filter e verificar se true dou um sucess se false dou um failure?
não tem como eu usando o filtro, na propria classe pai eu dar um failure no caso de false e em caso de true permitir o action filhor continuar? Ou dessa forma vou ter que extender o ActionServlet?

Agora quanto ao parameter, uma vez eu vi isso mas não sei como foi implementado mas, no caso o cara colocava o nome do metodo mesmo no parameter do action mapping e no link só chamava o action mesmo.
Vou ver certinho, se eu não estava bebado na hora e for verdade eu posto como é.ehehehehh

Valeu galera!