Controlando el flujo de navegación con AccionProxy

Del Mar, 22/05/2012 - 21:14 por LNi3to
En Java - WEB

Parte del Manual paso a paso para la creación de aplicación web Java MVC.

Continuando con la descripción de la operativa del método creaAction de AccionProxy.

Controlando el flujo de navegación:

Una vez la acción se ha ejecutado, la respuesta de la ejecución (en forma de "verdadero o falso") se almacena en la variable lógica RespAccExe, true si la acción se ejecutó de manera controlada y false si de la ejecución resultó un error inesperado.

En función de si la acción se ha ejecutado correctamente o no, se recuperan los parámetros correspondientes (resultType y resultValue) asociados al "true" o al "false" y se crea un nuevo loop (en caso que el resultado sea una acción) o se sale del bucle despachando a la página configurada.

Bloque de código con la evaluación de RespAccExe:

	if (RespAccExe.equals(true))
	{ 
		tipoRespAccExe =  confAcc.getProperty(nombAcc + ".true.resultType");
		if (tipoRespAccExe != null ){ tipoRespAccExe = tipoRespAccExe.trim(); }
		
		valorRespAccExe = confAcc.getProperty(nombAcc+".true.resultValue");
		if ( valorRespAccExe != null ) { valorRespAccExe = valorRespAccExe.trim(); }
		
		if (tipoRespAccExe.equals("action")) { 

			otraAcc = true;
			nombAcc = valorRespAccExe;
			
		} else {
			try { 
				otraAcc = false;
				request.getRequestDispatcher("/"+ valorRespAccExe).forward(request, response);
				break;
			} catch (Exception e) {  System.out.println(" error en forward: " + e.getMessage()); }
		}
		
	} else if (RespAccExe.equals(false)) {
		
		tipoRespAccExe =  confAcc.getProperty(nombAcc + ".false.resultType");
		if (tipoRespAccExe != null ){ tipoRespAccExe = tipoRespAccExe.trim(); }
		
		valorRespAccExe = confAcc.getProperty(nombAcc+".false.resultValue");
		if ( valorRespAccExe != null ) { valorRespAccExe = valorRespAccExe.trim(); }
		
		if (tipoRespAccExe.equals("action")) { 

			otraAcc = true;
			nombAcc = valorRespAccExe;
			
		} else {
			try { 
				otraAcc = false;
				request.getRequestDispatcher("/"+ valorRespAccExe).forward(request, response);
				break;
			} catch (Exception e) {  System.out.println(" error en forward: " + e.getMessage()); }
		}

	}

Siguiendo la lógica de nuestro caso de uso de ejemplo:

Al finalizar su ejecución la instancia ListarLibrosCuento y ser el resultado de la misma positivo/verdadero (en RespAccExe), se evalúan los parámetro de configuración listarLibrosDeCuentoDisponibles.true.resultType y listarLibrosDeCuentoDisponibles.true.resultValue, que en este caso indican que el resultado de esta acción es otra acción de nombre "listarCualquierLibroDisponible".

Así que la variable local nombAcc se carga con el nuevo valor ("listarCualquierLibroDisponible") y se adjudica a la variable lógica local otraAcc el valor "verdadero", lo que implicará que le bucle do-while se reinicie, esta vez para la nueva acción.

Una vez ejecutada la nueva acción, cuando lleguemos al mismo punto donde se evalúan resultType y resultValue encontraremos que la configuración indica que el resultado de esta acción es una página jsp con el nombre "respuesta.jsp", con lo que a otraAcc se le da el valor "false", se hace un forward la vista asociada y se interrumpe el bucle.

Continúa en: Estructura de las acciones, la lógica de negocios

X Cerrar Más información Esta web utiliza cookies para mejorar la experiencia de usuario. Si continúas navegando consideramos que aceptas su uso.