Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Groovy: primeros pasos

comparaciones en if

valmanar - lunes 23/11/2009

Hola a todos, tengo un servicio que recibe dos string como parametros, el usuario a buscar y su password , el caso es que encuentro el usuario perfectamente pero a la hora de comparar en un if sus propiedades no entiendo porque el if me está devolviendo false, os pongo el ejemplo:

 

class PruebaService {    

    boolean transactional = true

    def validarUsuario(String vUsuario, String vPassword) {

        def qUsuario = Usuario.findAllByUsername(vUsuario)

        if (qUsuario){

            println(qUsuario.fechaBaja)

            println(qUsuario.password)

            if (qUsuario.fechaBaja==null && qUsuario == vPassword){

                println("estoy dentro")

                return true

            }else{

                println("estoy en el false")

                println(qUsuario.activo)

                return false

            }

        }else{

            return false

        }

 

    }

}

Como dije antes nunca me da true, los println me dan el resultado correcto, o sea null y la password correspondiente, ¿porque nunca entra en el if por donde devuelve true.

Gracias a todos y un saludo. 

 

Re: comparaciones en if

Nacho - lunes 23/11/2009

Puede que sea un gazapo al publicar el post, pero sospecho que donde dice:

qUsuario.fechaBaja==null && qUsuario == vPassword

en realidad debería decir:

qUsuario.fechaBaja==null && qUsuario.password == vPassword

Por otra parte, podrías decir simplemente:

!qUsuario.fechaBaja && qUsuario.password == vPassword

Más información sobre "The Groovy Truth".

Re: comparaciones en if

valmanar - lunes 23/11/2009

Hola, efectivamente era un gazapo al hacer copy paste y en el código lo tenía bien, de todas formas he probado con la última línea que me indicas y tampoco funciona así, no me entra por la parte del if donde devuelvo true. Los println que tengo puestos me muestran esto:

 

[null]

[alberto]

estoy en el false

[true]

¿Alguna idea más por favor?, gracias por la atención y un saludo. 

 

Re: comparaciones en if

Nacho - lunes 23/11/2009

Prueba a cambiar esto:

def qUsuario = Usuario.findAllByUsername(vUsuario) // (que devuelve un List)

por esto:

def qUsuario = Usuario.findByUsername(vUsuario) // (que devuelve un Usuario o null)

Re: comparaciones en if

valmanar - lunes 23/11/2009

Muchas gracias funcióno perfectamente, no ví el detalle.

Saludos 

Responder al hilo | Volver al foro "Groovy: primeros pasos" | Volver a los foros