¿Cómo trabaja un DispatchAction?
Te pondré un ejemplo suponte que tengo una aplicación en la que necesito usar un mismo formulario pero cuando presiono un botón debe hacer un proceso y cuando presiono el otro debe hacer otro proceso.
Si esto te ocurre en un mismo formulario intenta algo así.
Código PHP:
//Supuesto action.
public class ConsultaAction extends DispatchAction{
public ActionForward doLogin(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{
//codigo de acceso a BD para tu login, de preferencia has una capa BO
// y desde la capa BO invoca una DAO que es la que invoca a las BD
}
public ActionForward doEnviar(ActionMapping mapping,ActionForm form,HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{
//codigo de enviar
}
En tu jsp algo como esto.
Código PHP:
<html:form action="/ConsultaAction" name="ConsultaForm" type="com.lpsoft.consulta.form.ConsultaForm">
<html:hidden property="dispatch" value=""/>
El parámetro dispatch en un hidden le dice al compilador que tiene un comportamiento de despachador de peticiones, el hecho de que permanezca con un valor nulo es para que puedas elegir cual método se ejecuta al presionar algún botón.
Código PHP:
<html:submit onClick="return enviar('ConsultaForm','login')>Login</html:submit>
<html:submit onClick="return enviar('ConsultaForm','enviar')>Envia</html:submit>
Generas una function de java script para indicar cual metodo del dispatch se ejecutara.
Código PHP:
function enviar(formu, tp){
var formulario = document.forms[formu]; //formulario
var tipo = tp; //metodo a ejecutar
if (tipo==login){
alert("login");
formulario['dispatch'].value="doLogin";
}else if(tipo==enviar){
formulario['dispatch'].value="doEnviar";
}
}else{
alert("metodo Action incorrecto");
return false;
}
return true;
}
El principio de la sabiduria es el respeto y el amor a Dios.