E aí galera beleza?
Estou tendo o seguinte problema.
Cheguei a conclusão que em meu projeto ficará mais fácil se eu tiver uma classe action uqe estende a casse action do struts, com métodos e funcionalidades comuns a todos os actions do projeto.
Até aí tudo bem, criei um action com as caracteristica acima e criei os outos actions herdando dessa classe e não do action e no action mapping coloquei as classes action que hedão desse “action pai” mas quando chamo o link do mapeamento aparece uma aviso de erro indicando que não foi possivel fazer a instnancia do action.
Uma coisa eu pensei: Se uma classe herda de action, então essa classe é um action. Se uma classe herda de uma classe que herdou de um action, ess classe também é um action.
Alguém poode me ajudar?
Opa,
eu faço isto, o mapeamento fica só para as actions que são classes filhas.
:okok:
eltonk
Junho 30, 2006, 9:35am
#3
O teu método “execute” deve retornar o “mapeamento”… o execute de estar nas tuas filhas, o que vc pode fazer é utilizar constantes na classe pai para utilzar o “mapeamento” desta forma… mas mesmo assim, os filhos tem caminhos diferentes a seguir, porque deixar isso no pai?!
Aí galera beleaza?
bom o erro é esse:
type Status report
message No action instance for path /Processadores could be created
description The server encountered an internal error (No action instance for path /Processadores could be created) that prevented it from fulfilling this request.
meu mapeamento está assim:
<action path="/Processadores" type="br.com.lojahardware.action.menuesquerdo.ProcessadoresAction">
<forward name="success"
path="menu.esquerdo.hardware.processadores"
redirect="false"
contextRelative="false" />
</action>
minha action “mãe” está asim
/**
* Criado em 29/06/2006
*/
package br.com.lojahardware.action;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import br.com.lojahardware.config.Constantes;
/**
* @author Leandro Costa Silva(<a href="mailto:leandrocosta.silva@terra.com.br">leandrocosta.silva@terra.com.br</a>)
*
*/
public abstract class SuperAction extends Action {
private HashMap &lt;String,String&gt;configs = null;
abstract public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception ;
public SuperAction(){
String appConfig = servlet.getServletContext().getRealPath(servlet.getInitParameter(Constantes.CONFIG));
String boConfig = servlet.getServletContext().getRealPath(servlet.getInitParameter(Constantes.BOPROPERTIES));
String daoConfig = servlet.getServletContext().getRealPath(servlet.getInitParameter(Constantes.DAOPROPERTIES));
configs = new HashMap&lt;String, String&gt;();
configs.put(Constantes.CONFIG,appConfig);
configs.put(Constantes.BOPROPERTIES, boConfig);
configs.put(Constantes.DAOPROPERTIES, daoConfig);
}
public HashMap getAppConfigs(){
return configs;
}
}
A filha é essa:
/**
* Criado em 26/06/2006
*/
package br.com.lojahardware.action.menuesquerdo;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import br.com.lojahardware.action.SuperAction;
import br.com.lojahardware.delegate.Delegate;
/**
* @autor Leandro Costa Silva(<a
* href="mailto:leandrocosta.silva@terra.com.br">leandrocosta.silva@terra.com.br</a>)
*
*/
public class ProcessadoresAction extends SuperAction {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
Delegate delegate = new Delegate(getAppConfigs());
List processadores = null;
processadores = delegate.getListaProcessadores();
request.setAttribute("processadores", processadores);
return mapping.findForward("success");
}
}
A meu ver isso está certo mas, vai saber, sa vezes a terra está girando ao contrário, brincaderia. :lol:
Mas obrigado pela força galera!
Opa,
para isto tua classe pai deve extender DispatchAction ao invés de Action.
:okok:
[quote=“marcossousa”]Opa,
para isto tua classe pai deve extender DispatchAction ao invés de Action.
:okok:[/quote]
cara, tentei mas nem funcionou
pode me mandar um exemplo, por caridade?
Já estou desesperado, se for o caso coloco at;e código asp aqui
ehheehhehe
Obrigado pela força galera
Opa,
acho que agora está mais fácil… bem esqueça o método execute… não servirá mais para nada… em compensação use o atributo na declaração da sua action:
aí quando você chamar sua action você faz assim:
http://myserver/myApp/minhaAction.do?metodo=metodoDestino
:okok:
E aí galera beleza?
Obrigado pela força!
Após ter apanhado muito finalmente consegui. Obrigado!
Que bom cara, parabéns!
O que eu lhe passei ajudou?
\0/
:okok: