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

results en Struts.xml

Estas en el tema de results en Struts.xml en el foro de Java en Foros del Web. Q asco de validaciones, esto hace lo que le da la gana y yo no lo entiendo, a ver. Tengo un action de la siguiente ...
  #1 (permalink)  
Antiguo 23/06/2011, 10:51
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 8 meses
Puntos: 4
results en Struts.xml

Q asco de validaciones, esto hace lo que le da la gana y yo no lo entiendo, a ver.

Tengo un action de la siguiente forma:

Código PHP:
package es.pfc.struts2.actions;

import java.util.Iterator;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import es.pfc.javabeans.Pacientes;
import es.pfc.modelo.dao.ModeloPacientesDAO;

public class 
PacientesAction extends ActionSupport implements ModelDriven<Object>{

    private 
Pacientes paciente = new Pacientes();
    private List<
PacienteslistaPacientes;
    

    public 
Object getModel() {
        return 
paciente;
    }

    public 
Pacientes getPacientes() {
        return 
paciente;
    }

    public 
void setPacientes(Pacientes pacientes) {
        
this.paciente pacientes;
    }


    
/*Metodos Acceso a Lista*/
    
    
public List<PacientesgetListaDatosPersonales() {
        return 
listaPacientes;
    }

    public 
void setListaDatosPersonales(List<PacienteslistaDatosPersonales) {
        
this.listaPacientes listaDatosPersonales;
    }
    
    
    
/*---------------------------------*/
    
    
public String agregarPaciente(){
        
        
        
ModeloPacientesDAO modeloPacienteDAO = new ModeloPacientesDAO();
        
int codigo modeloPacienteDAO.agregarPaciente(paciente);
        
        if(
codigo==1)
            return 
SUCCESS;
        else{
            
addActionError("¡Error en el registro!");
            return 
INPUT;
        }

    }
    
    public 
String listarPacientes(){
        
        
System.out.println("AQUI");
        
        
ModeloPacientesDAO modeloDatosPersonalesDAO = new ModeloPacientesDAO();
        
listaPacientes modeloDatosPersonalesDAO.listar(paciente);
        
        return 
SUCCESS;
    }
    
    
        

y mi struts.xml tiene la siguiente forma:

Código PHP:
<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="pacientes" class="es.pfc.struts2.actions.PacientesAction"
            
method="agregarPaciente">
            <
result name="success"jsp/nuevaHistoria.jsp </result>
            <
result name="input"jsp/altaPacientes.jsp </result>
        </
action>
        
            
        <
action name="listarPacientes" class="es.pfc.struts2.actions.PacientesAction"
            
method="listarPacientes">
            <
result name="success">jsp/correcto.jsp</result>
        </
action
El archivo de validaciones es el siguiente:

Código PHP:

<!DOCTYPE validators PUBLIC
        
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
>
 
<
validators>
  
    <
field name="nombre">
       <
field-validator type="requiredstring">
            <
message>Debe ingresar su nombre</message>
        </
field-validator>
    
         <
field-validator type="stringlength">
             <
param name="maxLength">45</param>
            <
message>Máximo 45 caracteres</message>
      </
field-validator
    </
field>
       
    <
field name="apellidos">
       <
field-validator type="requiredstring">
            <
message>Debe ingresar sus apellidos</message>
        </
field-validator>
    
         <
field-validator type="stringlength">
             <
param name="maxLength">45</param>
            <
message>Máximo 45 caracteres</message>
      </
field-validator
    </
field>
    
</
validators

a la hora de poner las validaciones (PacientesAction-validation.xml) tengo q devolver un "INPUT" en cada una de los metodos que forman el action??

Es que cuando hago referencia a la accion listarPacientes me salta un error diciendo que no tengo un input referenciado, pero es que ni siquiera entra en el metodo, ese println que tengo no se muestra en consola. Me muestra la pagina correcto.jsp pero no muestra los datos de la lista.

Última edición por fcojose2001; 23/06/2011 a las 11:00
  #2 (permalink)  
Antiguo 23/06/2011, 15:49
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: results en Struts.xml

Cita:
Q asco de validaciones, esto hace lo que le da la gana y yo no lo entiendo, a ver.
Bueno, cuando no leemos como funcionan las cosas, suele pasar que no obtenemos los resultados esperados.

Cita:
Es que cuando hago referencia a la accion listarPacientes me salta un error diciendo que no tengo un input referenciado, pero es que ni siquiera entra en el metodo,
Lógico, la idea de separar la validación de la lógica de negocio es esa, separar cada una de las partes. ¿Para qué quiero entrar en un método de negocio cuando ya sé que las condiciones no se cumplen?

Si quiero/necesito gestionar los errores más allá de que me devuelva a la página de origen indicando los campos erróneos, existe un método llamado validate, una interfaz ValidationAware y un interceptor workflow.

Cita:
a la hora de poner las validaciones (PacientesAction-validation.xml) tengo q devolver un "INPUT" en cada una de los metodos que forman el action??
No, pero necesitas leer un poco sobre el tema para ver cómo se hacen las cosas.
__________________
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/06/2011, 18:52
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: results en Struts.xml

Parte de este proyecto te lo debo Xerelo, de verdad, muchas gracias por seguir contestando mis dudas.

Finalmente he solucionado el problema asociando el archivo de validacion a una sola accion, es decir, en mi caso, PacientesAction-agregarPaciente-validation.xml

Respecto a lo de colocar este archivo en otro sitio que no sea en el mismo paquete que su respectivo action no he encontrado informacion alguna, creo q dejare todo junto
  #4 (permalink)  
Antiguo 24/06/2011, 01:06
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: results en Struts.xml

Lo de cambiar de sitio el fichero se puede hacer, pero lo cierto es que struts está pensado para usarlo como lo has hecho, así que ese tipo de "arreglos" deberías hacerlos cuando tengas todo funcionando.

Si lees información sobre el tema, verás que los validation se asocian a una action determinada, pero también existe la posibilidad de asignar un mismo validation a varias action, y de usar varios validation en un sólo action.

Primero que funcione y después ya lo pondrás a tu gusto y bonito.
__________________
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.

Etiquetas: jsp-servlets, results
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:36.