gpt4 book ai didi

grails - 在grails Controller 中将字符串与检索到的值进行比较

转载 作者:行者123 更新时间:2023-12-02 15:33:08 24 4
gpt4 key购买 nike

我正在尝试为登录创建登录操作。我从数据库中获取值(value)。但是问题是,当我用字符串检查值时,它不能正常工作,其他部分被执行并在浏览器中显示消息。我正在使用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]

最佳答案

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

您正在将该列表与admin作为字符串值进行比较。所以,正确的["admin"] != "admin"
只需使用findBy即可,例如:

def user = Login.findByUsernameAndPassword(username, password)

关于grails - 在grails Controller 中将字符串与检索到的值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com