Struts 1.X : Como dar Submit?

Bom pessoal, acabei de ser contratado por uma empresa, e para o meu desespero eles usam Struts 1.x. Nunca tive contato como Struts, e estou estudando, comprei até um livro, o Struts em Ação, mas este não é muito didático e dá muitas voltas para falar de um assunto e acaba não sendo didático.
Tenho que começar a produzir logo, senão minha cabeça vai a prêmio, e preciso desta oportunidade.
A empresa me deu um tempinho para estudar o Struts, mas estou emperrado em alguns pontos.

  1. Tenho minha Action que atualmente só conecta ao banco, pega o resultado dessa consulta, joga em um List, e este List eu jogo na minha Sessão.
    Executo o mapping.findfoward(“minha.jsp”).

Segue o código:

public class listarPessoasAction extends DispatchAction {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		// Aqui faz conexão com o BD e executa uma query e coloca   o                 resultado numa List L.
		
		request.getSession().setAttribute("pessoas", L);
		return mapping.findForward("listarPessoas");
	}
}

Até aqui Blza!

90% das minhas dúvidas moram na jsp. Vamos a ela:

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
		<title></title>
	</head>
	<body>
	<form action="">
		<table align="center">
			<tr>
				<td>
					<select name="selectPessoas">  
    					<logic:iterate id="element" name="pessoas" scope="session">
    						<option value="<bean:write name="element" />"><bean:write name="element" property="nome"/></option>  
    					</logic:iterate>  
    				</select>  
    			</td>
			</tr>
			<tr>
			<td><html:submit value="Teste" /></td>
		</tr>
		</table>
		</form>
	</body>
</html>

Eis as dúvidas:

Quero criar 3 ações(Pesquisar, Incluir e Deletar), não quero que vcs me deem dicas de como realizar essas ações na integra, só nao sei e nao consigo nem imaginar, como q eu faço para a partir desta jsp acima invocar diferentes métodos na action.

Sei que tenho que criar esses respectivos metodos na Action (Incluir,excluir e Pesquisar). Na jsp eu criaria tb 3 botões com esses respectivos nomes(além de textfields), mas como que eu faria para cada botão desse chamar o método respectivo na minha Action ?
Ou seja, que ao user clicar no botão “criar” fosse chamado o método criar da minha action?
Estou revirando foruns igual a um doido a procura de ajuda mas nao tenho tido sucesso. Sei que em foruns ng gosta de dar coisas prontas, mas só peço apenas o caminho, só clicar no botão Criar e executar o metodo respectivo (metodo em branco mesmo) por exemplo.
Obrigado desde já, e desculpa o desespero.

Tenta colocar na tag (http://struts.apache.org/1.2.x/userGuide/struts-html.html#select). Chama assim a action com os dados do cliente.

Você ate pode chamar a mesma action passando parametros diferentes.

um exemplo:

<html:select property="maquina.id" onchange="redirect('?metodo=entrar&tipo=consultarModulo&maquina.id='+this.value)"> <html:option value="">:: Selecione ::</html:option> <html:options collection="colMaquina" property="id" labelProperty="descricaoId"/> </html:select>

ai faça um metodo “entrar” passando o valor do campo… este método que vai ser responsável por controlar a consulta…

Ainda não entendi.
Como que vai chamar o método da Action nessa historia ?

no seu jsp, vc define o seu action… que vai ter que estar definido no struts-config também…

 <form action="/meuAction">   

struts-config

[code]

	<forward name="cadastrar" path="page.cadastrar" />
	
</action>[/code]

e no seu action, crie um método com o mesmo nome que vai estar declarado no redirect do <html:select…

public ActionForward entrar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {   
           
       //corpo do método...  
        return mapping.findForward("listarPessoas");   
    }   

[quote=alves.Felipe]no seu jsp, vc define o seu action… que vai ter que estar definido no struts-config também…

 <form action="/meuAction">   

struts-config

[code]

	<forward name="cadastrar" path="page.cadastrar" />
	
</action>[/code]

e no seu action, crie um método com o mesmo nome que vai estar declarado no redirect do <html:select…

[code]
public ActionForward entrar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

   //corpo do método...  
    return mapping.findForward("listarPessoas");   
}   

[/code][/quote]
Obrigadão irmão, vou testar aqui.

Estou testando outra forma de fazer (que vou postar o código para que quem saiba ajude outras pessoas), mas está me dando um erro que nao consigo sanar por nada desse mundo.
Só está abrindo a jsp que foi a ultima declarada no action do struts-config. Ou seja save ai embaixo é o ultimo, então só ele é executado, mesmo vindo na url da pagina outro parameter como por exemplo: http://localhost:8084/StrutsDanado/MappingDispatchAction.do?parameter=edit
Se eu passar toda action do save para cima, a search fica sendo a ultima, e ai só a MappingDispatchActionSearch.jso ira executar independente do parameter.
Onde está o erro nesse XML ?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation //DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
    <form-beans>
    </form-beans>
        <action-mappings>
        <action path="/MappingDispatch_Action" 
        type="app.MappingDispatch_Action"
        parameter="add"
        input="MappingDispatchAction.jsp"
        scope="request"
        validate="false">
        <forward name="add" path="/MappingDispatchActionAdd.jsp" />
        </action>
        <action path="/MappingDispatchAction"
        type="app.MappingDispatch_Action"
        parameter="edit"
        input="/MappingDispatchAction.jsp"
        scope="request"
        validate="false">
        <forward name="edit" path="/MappingDispatchActionEdit.jsp" />
        </action>
        <action path="/MappingDispatchAction"
        type="app.MappingDispatch_Action"
        parameter="search"
        input="/MappingDispatchAction.jsp"
        scope="request"
        validate="false">
        <forward name="search" path="/MappingDispatchActionSearch.jsp" />
        </action>
        <action path="/MappingDispatchAction"
        type="app.MappingDispatch_Action"
        parameter="save"
        input="/MappingDispatchAction.jsp"
        scope="request"
        validate="false">
        <forward name="save" path="/MappingDispatchActionSave.jsp" />
        </action>
    </action-mappings>
</struts-config>

Minha Action

public class MappingDispatch_Action extends MappingDispatchAction{
    
    public ActionForward add(ActionMapping mapping,ActionForm form, 
                             HttpServletRequest request, HttpServletResponse response){

        System.out.println("Método Add");
        return mapping.findForward("add");
    }

    public ActionForward edit(ActionMapping mapping,ActionForm form, 
                             HttpServletRequest request, HttpServletResponse response){

        System.out.println("Método edit");
        return mapping.findForward("edit");
    }
    
    public ActionForward search (ActionMapping mapping,ActionForm form, 
                             HttpServletRequest request, HttpServletResponse response){

        System.out.println("Método search");
        return mapping.findForward("search");
    }
    
    public ActionForward save (ActionMapping mapping,ActionForm form, 
                             HttpServletRequest request, HttpServletResponse response){

        System.out.println("Método save");
        return mapping.findForward("save");
    }
    
}

A Jsp:

%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html:html locale="true">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Teste Dispach </title>
    </head>
    <body>
        <H3>Dispatch Action Example</H3>
<p><html:link page="/MappingDispatchAction.do?parameter=add">Call Add Section</html:link></p> 
<p><html:link page="/MappingDispatchAction.do?parameter=edit">Call Edit Section</html:link></p> 
<p><html:link page="/MappingDispatchAction.do?parameter=search">Call Search Section</html:link></p> 
<p><html:link page="/MappingDispatchAction.do?parameter=save">Call Save Section</html:link></p> 
    </body>
</html:html>

Onde está o problema??? Minha Action está no package app, e as jsp´s todas estão nas páginas-web do netbeans.
Obrigadão desde já.

cara , vc esta declarando vários actions iguais…

<action path="/MappingDispatchAction"
deve ser por isso que só ele pega o último…

Os Actions são iguais, mas os parameters são diferentes.
Veja só na jsp como são chamados.
E tem dado esse erro quando compilo:
The content of element type “struts-config” must match "(display-name?,description? …