Foros del Web » Programación para mayores de 30 ;) » Java »

direccionamiento en Struts 2

Estas en el tema de direccionamiento en Struts 2 en el foro de Java en Foros del Web. Buenas noches. Tengo un pequeño problema, a la hora de moverme entre varias jsp enlazadas utilizo la sentencia: Código PHP: < s : a href = ...
  #1 (permalink)  
Antiguo 23/11/2010, 13:54
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 13 años, 8 meses
Puntos: 4
direccionamiento en Struts 2

Buenas noches.

Tengo un pequeño problema, a la hora de moverme entre varias jsp enlazadas utilizo la sentencia:

Código PHP:
<s:a href="jsp/menuPacientes.jsp"
El problema viene cuando al entrar en la pagina menuPacientes.jsp y ejecutar el action de un form salta un error ya que intenta buscar el action en jsp/nombreAccion.action y la clase del action no está en esa carpeta jsp sino en src. Como puedo hacer para redireccionar entre JSPs y evitar este problema?

Muestro una captura de pantalla de como esta organizada la aplicacion.

Código HTML:
http://img600.imageshack.us/img600/1950/captura54.jpg
  #2 (permalink)  
Antiguo 23/11/2010, 15:31
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 13 años, 6 meses
Puntos: 306
Respuesta: direccionamiento en Struts 2

Lo estás poniendo en un action="", por lo que lo lógico es que espere un action, no una JSP.

Dos opciones:

1. Utiliza el atributo value de <s:a >, no el action

http://struts.apache.org/2.0.14/docs/a.html

2. Struts te permite crear "acciones fantasma" para redirigir. Haz que href apunte a action="menuPacientes"

En struts.xml añade la siguiente "falsa action"

Cita:
<action name="menuPacientes">
<result>jsp/menuPacientes.jsp</result>
</action>
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 23/11/2010, 16:35
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: direccionamiento en Struts 2

hola tio, muchas gracias por toda tu ayuda.

La idea es no utilizar ningun action para la redireccion. Creo q no he explicado bien el caso. Imaginate un menu con una serie de opciones, segun vayas clikeando van surgiendo nuevas opciones, cada una de ellas en una pagina jsp.

Una vez q llegas a la JSP deseada se presenta un formulario el cual tiene asociado un action.

Para q te hagas una idea, estas son las rutas por la q pasa la aplicacion:

Código HTML:
http://localhost:8080/2PFCRuvier/
http://localhost:8080/2PFCRuvier/login.action
http://localhost:8080/2PFCRuvier/jsp/menuPacientes.jsp
http://localhost:8080/2PFCRuvier/jsp/altaPaciente.jsp
http://localhost:8080/2PFCRuvier/jsp/datosPersonales.action

El problema es q ese ultimo action q proviene del form no lo encuentra porq esa no es la ruta correcta, en su lugar deberia salir
Código HTML:
http://localhost:8080/2PFCRuvier/datosPersonales.action
Por ello, utilizando:

Código HTML:
<s:a href="jsp/menuPacientes.jsp"> en su respectiva JSP
<s:a href="altaPaciente.jsp"> en su respectiva JSP
no se como salir del directorio jsp o como hacer q apunte el action al sitio correcto para q lo pueda mapear

Este seria un extracto del struts.xml

Código PHP:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.ui.theme" value="xhtml"/>

    <package name="default" namespace="/" extends="struts-default">
    
        <action name="login" class="es.pfc.struts2.actions.LoginAction" method="validarAdministrador">
            <result name="success"> jsp/menuPrincipal.jsp  </result>
            <result name="error"> jsp/login.jsp </result>
        </action>
        
        
        <action name="datosPersonales" class="es.pfc.struts2.actions.DatosPersonalesAction" method="agregarPaciente">
            <result name="success"> jsp/correcto.jsp  </result>
            <result name="error"> jsp/error.jsp </result>
        </action>
        
    </package>

  
</struts>

Última edición por fcojose2001; 23/11/2010 a las 16:41
  #4 (permalink)  
Antiguo 23/11/2010, 17:29
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 13 años, 6 meses
Puntos: 306
Respuesta: direccionamiento en Struts 2

Cita:
La idea es no utilizar ningun action para la redireccion.
La segunda opción que he puesto no es un action, no tienes que crear ninguna clase, sólo poner el código tal cual lo he puesto yo, por eso la llamé "acción fantasma".

Es una práctica recomendada, ¿por qué?, porque te permite comprender el flujo de tu aplicación viendo sólo struts.xml.
Cita:
no se como salir del directorio jsp o como hacer q apunte el action al sitio correcto para q lo pueda mapear
Eso es simplemente el concepto de ruta relativa o absoluta, igual que en HTML

http://www.forosdelweb.com/f4/duda-c...2/#post2892960
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 23/11/2010, 17:48
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 13 años, 8 meses
Puntos: 4
Respuesta: direccionamiento en Struts 2

Ya cambie todas las redirecciones por "acciones fantasmas" y la aplicacion corre perfectamente.

En otro rato me pongo con las relativas/absolutas ya que no termino de comprender como aplicarlo a struts2. Lo mismo me pasa con el namespace, pero ya para otro momento xD

Muchas gracias

Última edición por fcojose2001; 23/11/2010 a las 17:53

Etiquetas: direccionamiento, struts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:58.