Olha eu de novo 
Meu projeto usa struts 1.2, criei todas as Action mas eu acho que ta muito porco, por que está estruturado da seguinte maneira:
É possível criar uma única Action, tipo MendigoAction e nela ter todos os métodos de inserir mas sem precisar passar um parâmetro na URL? Como ficar o struts-config.xml?
[]'s
Existem 3 opções:
1° - Estender a classe Action e no execute fazer as condições necessárias através de um parâmetro, esse parâmetro não precisa estar na url pode ser um campo hidden via form post…
2° - Estender a classe DispatchAction e passar um parâmetro com o nome do método que vc quer acessar, precisa acrescentar o atributo parameter no actionmapping do struts.config…
3° - Estender a classe LookupDispatchAction e sobrescrever o método getKeyMethodMap onde retorna um map que a key é o nome da ação e o value é o nome do método, tanb precisa acrescentar o atributo parameter no actionmapping do struts.config…
O ideal é isso, uma única Action com todos métodos.
Você pode setar a ação via JavaScript, vc configura qual será seu parâmetro de ação no struts-config.
<action path="/mendigo" name="formMendigo"
type="com.pacote.ActionMendigo" scope="session"
input="mendigo.jsp" parameter="acao">
</action>
Na sua Action, vc tem por exemplo o método “insere”, no seu jsp, vc seta o parâmetro “acao” do seu form com esse nome. Então ele entra no “insere” de sua Action.
Até mais.
[quote=rodrigo_corinthians]Existem 3 opções:
1° - Estender a classe Action e no execute fazer as condições necessárias através de um parâmetro, esse parâmetro não precisa estar na url pode ser um campo hidden via form post…
2° - Estender a classe DispatchAction e passar um parâmetro com o nome do método que vc quer acessar, precisa acrescentar o atributo parameter no actionmapping do struts.config…
3° - Estender a classe LookupDispatchAction e sobrescrever o método getKeyMethodMap onde retorna um map que a key é o nome da ação e o value é o nome do método, tanb precisa acrescentar o atributo parameter no actionmapping do struts.config…[/quote]
De todas que eu li, a melhor seria a Dispatch né? Pq a Lookup eu iria precisar setar um message key na jsp, estou certo?
Mas na DispatchAction vou precisar passar um parâmetro também, não tem como passar o parâmetro sem ser na URL?
Bom as 3 fazem a mesma coisa de formas diferentes mas fazem dai vai do seu gosto mas eu também prefiro a DispatchAction.
Faz assim cria uma classe abstrata estendendo DispatchAction e sobreescreve o método dispatchMethod, fica mais fácil pra controlar as exceções e tals…
Pra usar Lookup no javadoc mostra um exemplo usando os message key’s mas eu acho que não precisa, faz um teste ae e depois fala pra gente. rs
Sim como tinha dito antes esse parâmetro vc pode passar num campo hidden via form mesmo, não vai ficar exposto na url.
To fazendo com o DispatchAction mas to levando pau dele rs
Minha classe está assim:
public class RegionalAction extends DispatchAction{
public ActionForward inserir(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
jsp.
<html:form action="/mendigoAction.do">
<input type="hidden" name="acao" id="acao"/>
<script>
function setarAcao(){
document.getElementById('acao').value = "cadastrar";
}
</script>
e meu struts-config.xml
<action path="/regionalAction"
type="br.com.mdg.struts.action.mendigo.MendigoAction"
name="mendigoForm"
parameter="acao"
scope="request">
<forward redirect="true" name="sucesso" path="/ShowMendigoInsert.do"/>
</action>
Se eu passar a acao na action, ele funciona mas eu não qro fazer isso, quero passar por hidden!!
Ta faltando alguma coisa?rs
Bom a exceção está bem clara(NoSuchMethodException = não encontrou o método) mas na função javascript vc está passando um nome(cadastrar) que não existe, coloca o nome correto(inserir) que funciona…
Nossa que vergonha :oops:
Eu estava crente que tinha mudado isso, eu realmente mudei, mas foi na JSP errada rsrs
Valeu amigo, agora ta bala o sistema 
[]'s
Mais uma pergunta: se eu não definir ação nenhuma, tem como passar uma ação padrão para a classe?
Se não tiver ação nenhuma ele vai tentar acessar o execute() que na classe pai(ActionSupport) retorna uma String SUCCESS.
Certo, mas vamos supor o seguinte cenário: tenho uma classe que é chamada quando acesso o link para ir para a página show.jsp. Vamos supor que a action chamada seja a MendigoShowAction, dentro dessa classe tem um método que passa um parâmetro para a show.jsp.
No struts config, mudei para usar a MendigoAction e ser a única Action, eu consigo usar ela para realizar o que a MendigoShowAction fazia ( acessar http://localhost:8080/mdg/mendigoAction.do ao invés do http://localhost:8080/mdg/mendigoShowAction.do) e partir dela retornar uma String sem dar pau que não foi passado nenhum parâmetro ‘ação’?
[]'s
Favor desconsidera a minha última mensagem viajei grandão isso ae vale no Struts 2. :oops: Sexta de tarde é foda o cerébro já não funfa direito. hahaha
Isso se não passar o parâmetro sempre vai dar pau, vc tá estendendo a DispatchAction direto neh? Se sim acrescenta esses métodos na sua Action…
[code]protected ActionForward dispatchMethod(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response, String parameter) throws Exception {
try {
if(parameter == null || parameter.trim().equals("")){
parameter = “pageInit”;
}
ActionForward actionForward = super.dispatchMethod(actionMapping, actionForm, request, response, parameter);
return actionForward;
} catch(Exception e) {
// Aqui vc trata a exceção ao seu estilo.
throw e;
}
}
protected ActionForward pageInit(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response, String parameter) throws Exception {
return null; // forward pra página show.jsp
}[/code]
Po cara, deu certinho
Olhei a documentão e esse dispatchAction ( … ) é quem redireciona e tal 
Valeu
[]'s