Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/05/2008, 03:58
Avatar de Llave
Llave
 
Fecha de Ingreso: abril-2005
Ubicación: Galicia
Mensajes: 52
Antigüedad: 19 años
Puntos: 1
De acuerdo Re: Problema al usar PartialTriggers y AutoSubmit en un formulario entre dos campos.

Ya hallé una solución.

Lo que hice fue "clonar" la clase del modelo en el Bean de este JSP.
Lo hice así para que a la hora de llamar a los setters y getters, llamo a los de mi clase "clonada".

Esta clase "clonada" contiene dos variables privadas que guardarán una copia de la clase original del modelo y una clase "copia" que será sobre la que realizaré los setter y getters desde el JSP.

No sé si me expliqué bien, la idea es hacer los setters hacia la clase clonada, esta, en sus setters lo primero que hace es comprobar si el valor que me lleva por parámetro y el de la clase original es el mismo, si es así, no hago nada, en caso contrario guardo el valor en la clase "copia".

Al final, cuando las ediciones sobre el JSP acaben y pulsen la tecla "guardar". Hago un volcado de la clase copia sobre la clase original y esta la sobreescribo sobre el modelo.

Código PHP:

// Clase Clone de Construction. Haremos los setters sobre esta clase para comprobar qué campos cambian realmente.
public class ConstructionClone implements Construction
{
 
// Aquí vendrían los getter y los setters de los métodos del modelo. Pondré 2 a modo de ejemplo.
    /// getter of _numUnits. 
    
public int getNumUnits() { return _copy.getNumUnits(); }

    
/// setter of _numUnits
    
public void setNumUnits(int val)
    {
        
int originalVal _original.getNumUnits(); 
        if (
val != originalVal)
        {
            
// Es distinto al original, luego hay cambios en este parámetro. Llamo al setter de la copia.
            
_copy.setNumUnits(val);
        }
        
// En caso de ser igual al original no hago nada, ya que entiendo que no se modifica el valor.
    
}
    
    
/// Este método recupera del original los datos (eliminando los que tengamos en la copia actual)
    
public void restoreFromOriginal() { //TODO: Pendiente... }

    /// Este método realiza el volcado de la copia al original ("save"). Usar con cuidado.
    
public void copyToOriginal() { //TODO: Pendiente... }

//----------------- Private zone --------------
    
private Construction _original = new Construction();
    private 
Construction _copy = new Construction();

Más o menos la idea es esa. A mi me ha servido :)

Última edición por Llave; 15/05/2008 a las 04:03