将字符串与grails控制器中检索到的值进行比较

时间:2013-05-09 09:37:18

标签: grails grails-2.0

我正在尝试为登录创建登录操作。我从数据库中获得了价值。但问题是,当我用字符串检查值时,它不能正常工作并且else部分已执行并在浏览器中显示消息。我正在使用grails 2.1.0。虽然我认为这是一个非常正常的问题,但我不知道怎么做。有人可以帮我这个吗?以下是我的代码:

def loginAction = {
    def username = params?.username
    def password = params?.password
    def user = Login.findAllByUsernameAndPassword(username, password)
    def status = user.status
    def role = user.role
    println(">>>>>>>>>>>>>>>>>>>>>>>> "+role);

    if(role == 'admin'){
        render "Admin Login"
    }else if(role == "teacher"){
        render "Teacher's Login"
    }else if(role == "student"){
        render "student login"
    }else{
        flash.message = message(code: "Log-In failed, Please try again !!!")
        redirect(controller:"login",action:"login")
    }
}

请注意,println可以工作并提供以下输出:

>>>>>>>>>>>>>>>>>>>>>>>> [admin]

1 个答案:

答案 0 :(得分:1)

您正在使用.findAllBy,因此您有一个用户列表,此列表中包含一个元素。因此,角色变量具有[admin]值(请参阅提供的输出),它是一个角色列表。字符串列表,而不是字符串。

您将此列表与admin作为字符串值进行比较。所以,这是正确的["admin"] != "admin"

只需使用findBy,例如:

def user = Login.findByUsernameAndPassword(username, password)