Hola, estoy con un proyecto que usa Spring,Hibernate,JSF primefaces y Struts2.
Tengo un formulario con 4 campos:
- Tipo: radio con 4 valores posibles
- Descripcion: un textfield
- Fecha: un datepicker para escoger la fecha
- hora: son dos select para seleccionar hora y minuto.
En el action de esa vista, tengo los metodos add,edit,save,validate.
El problema es el siguiente:
Yo introduzco valores y por ejemplo, si en validate esta puesto que tengo que rellenar todos los campos y yo no los relleno todos(en conclusion, la funcion validate devuelve false), me vuelve al formulario para poder cambiar los datos.
Si introduzco todo bien, se guarda pero si por ejemplo el campo descripcion tiene el valor "Hola esta es mi descripcion", pasa a tener el siguiente valor :
"Hola esta es mi descripcion,Hola+esta+es+mi+descripcion"
Si por ejemplo esta segunda vez, en vez de poner bien todos los campos, no los relleno todos (por tanto validate devolvera flase), el campo descripcion muestra este valor:
Hola esta es mi descripcion, Hola+esta+es+mi+descripcion, Hola+esta+es+mi+descripcion, Hola%2Besta%2Bes%2Bmi%2Bdescripcion
Lo raro es que si la primera vez lo haces mal, cuando te devuelve al formulario, la descripcion sale bien (SOLO LA PRIMERA VEZ), pero al guardarlo se guarda concatenado.
Y cada vez que le das a guardar se "duplica" el String, por asi decirlo. No muestra la descripcion que se va a guardar, a pesar de que la concatena.
Da la sensacion que muestra lo que valia "antes".
He hecho un log al principio y final de cada metodo y la variable descripcion entra y sale mal, no la modifico yo en mis funciones.
He pensado que podria ser el encoding, pero las 'ñ' y las tildes las muesta, ademas todo está en utf-8.
HE pensado que podria ser por los interceptores, pero no hay nada en ese codigo que me haga pensar que concatena un string o algo similar.
Tambien me he fijado en que, por ejemplo en los campos select, si yo hago un log, cada vez que le doy a guardar y no cumple los requisitos por validacion, me lo concatena, si yo por ejemplo escojo la primera vez la hora 14, la segunda vez la hora 16 y la tercera vez la hora 5, la variable hora tiene el valor "5, 16, 14".
Es como si guardara un historial de todos los valores.
El problema real lo tengo en el campo descripcion, ya que en el resto de campor puedo hacer un split(", ")[0] y obtener el ultimo valor, pero si en descripcion alguien mete una coma y un espacio, lo detectará y lo partirá por ahi, entonces truncara el string descripcion.
No se si me he explicado muy claro, espero que si
Gracias un saludo