gpt4 book ai didi

email - Grails findAllByRole()错误

转载 作者:行者123 更新时间:2023-12-02 14:56:16 25 4
gpt4 key购买 nike

我试图在调用list()操作时向具有管理员角色的所有用户发送电子邮件。
在 list 方法中,我放入了以下代码:

 def admins = User.findAllByRole("ROLE_ADMIN")
//def approverEmails = User.findByRole("ROLE_APPROVER").collect { it.email }
notifierService.sendApproverRequestEmail(admins)

flash.message = message(code: 'default.created.message', args: [message(code: 'project.label', default: 'Project'), projectInstance.id])
redirect(action: "show", id: projectInstance.id)

但是Grails无法识别findAllByRole()方法。我究竟做错了什么?当调用 Controller 中的某些操作时,是否还有其他方法可以从服务发送消息。

这也是我的服务代码:
  def sendApprovalRequestEmail( def users ) {
users.each { -> user
mailService.sendMail{
to user.email
from "padre@everyonecounts.com"
subject "New project needs approval."
body "Hi ${user.username}! " +
"New project has been requested and needs your approval."


}
}
}

这是错误:
URI
/PaDRe/project/list
Class
org.codehaus.groovy.grails.exceptions.InvalidPropertyException
Message
No property found for name [role] for class [class com.everyonecounts.padre.User]
Around line 21 of grails-app\controllers\com\everyonecounts\padre\ProjectController.groovy
18: params.max = Math.min(params.max ? params.int('max') : 10, 100)
19: [projectInstanceList: Project.list(params), projectInstanceTotal: Project.count()]
20:
21: def admins = User.findAllByRole("ROLE_ADMIN")
22: //def approverEmails = User.findByRole("ROLE_APPROVER").collect { it.email }
23: notifierService.sendApproverRequestEmail(admins)
24:
Trace
Line | Method
->> 108 | methodMissing in org.grails.datastore.gorm.GormStaticApi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 21 | list in ProjectController.groovy
| 895 | runTask . . . in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run in ''
^ 662 | run . . . . . in java.lang.Thread

这是我的用户类(class)

包com.everyonecounts.padre
class User{

transient springSecurityService

String username
String password
String email
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired

static constraints = {
username blank: false, unique: true
password size: 5..80, blank: false
}

static mapping = {
password column: '`password`'
}

Set<Role> getAuthorities() {
UserRole.findAllByUser(this).collect { it.role } as Set
}


def beforeInsert() {
encodePassword()
}

def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}

protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
}

最佳答案

您遇到的问题是因为您不了解默认的Spring Security实现。要获取具有给定角色的用户列表:

UserRole.findAllByRole(Role.findByAuthority("ROLE_ADMIN"))*.user

关于email - Grails findAllByRole()错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702963/

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