Grails3:AuthRoleControl中java.lang.Boolean hasErrors()的返回类型与grails.artefact.Controller中的Boolean不兼容
我已经将我的应用程序从Grails2.5升级到Grails3.3.11。我已经完成了所有步骤,一切看起来都很好,但当我运行应用程序时。我有一个错误: 启动失败: /home/server dev/Documents/dev_repo/tms/grails app/controllers/org/niport/auth/AuthRoleController.groovy:-1:org.niport.auth.AuthRoleController中java.lang.Boolean hasrerrors()的返回类型与grails.artifact.Controller中的Boolean不兼容 . 在[-1:-1]@第1行第1列。 1错误 失败:生成失败,出现异常Grails3:AuthRoleControl中java.lang.Boolean hasErrors()的返回类型与grails.artefact.Controller中的Boolean不兼容,java,grails,upgrade,Java,Grails,Upgrade,我已经将我的应用程序从Grails2.5升级到Grails3.3.11。我已经完成了所有步骤,一切看起来都很好,但当我运行应用程序时。我有一个错误: 启动失败: /home/server dev/Documents/dev_repo/tms/grails app/controllers/org/niport/auth/AuthRoleController.groovy:-1:org.niport.auth.AuthRoleController中java.lang.Boolean hasrerro
- 出了什么问题: 任务“:compileGroovy”的执行失败
import grails.plugin.springsecurity.SpringSecurityService
import grails.transaction.Transactional
import org.niport.com.ComTrainingCenter
import org.niport.com.ComTrainingCenterService
import org.niport.com.FileService
import org.niport.com.TrackerService
import org.springframework.security.core.context.SecurityContextHolder
import javax.imageio.ImageIO
import java.awt.image.BufferedImage
import static org.springframework.http.HttpStatus.CREATED
import static org.springframework.http.HttpStatus.OK
@Transactional(readOnly = true)
class AuthUserController {
private static final allowedImageType = ['image/png', 'image/jpeg']
SpringSecurityService springSecurityService
AuthUserService authUserService
TrackerService trackerService
FileService fileService
def dateParseFormat,
currentDate
AuthUser currentUser
@Transactional
save(AuthUser userInstance) {
if (userInstance == null) {
flash.error = message(code: "default.message.noRecordFound.label", default: "Error-Save-AuthUser-L21 : Record not found...!")
redirect(action: "create")
return
}
userInstance.avatarType = params.attachment ? fileService.uploadFile("auth", "auth_user", userInstance?.username, "any", 1, 5000000, params.attachment) : null
userInstance.createdBy = currentUser?.id
userInstance.properties["hdCode"] = trackerService.getHdCode(params.password)
userInstance.validate()
if (userInstance.hasErrors()) {
flash.error = "Error-Save-AuthUser-L27 : " + userInstance.errors
redirect(action: "create", userInstance: userInstance)
return
}
try {
userInstance.save(failOnError: true)
}
catch (Exception e) {
println "ex-user-sa-L112 : " + e
flash.error = "Error-Save-AuthUser-L113 : " + e
redirect(action: "create", userInstance: userInstance)
return
}
request.withFormat {
form multipartForm {
flash.success = message(code: "default.message.created", args: [message(code: "user.pageTitle.label", default: "AuthUser"), userInstance.id])
redirect userInstance
}
'*' { respond userInstance, [status: CREATED] }
}
}}
--------------------------AuthRoleController.groovy ----------------------
mport grails.transaction.Transactional
import grails.validation.Validateable
//import grails.artefact.Controller
//import java.lang.*
import static org.springframework.http.HttpStatus.CREATED
import static org.springframework.http.HttpStatus.OK
class AuthRoleController implements Validateable {
static allowedMethods = [save: "POST", update: "PUT"]
def springSecurityService, dateFormat, currentDate, currentUser
def beforeInterceptor = {
currentDate = new Date()
currentUser = springSecurityService.getCurrentUser()
dateFormat = grailsApplication.config.format.dtp.date
}
@Transactional
def save(AuthRole roleInstance) {
roleInstance.createdBy=(AuthUser)currentUser
roleInstance.validate()
if (roleInstance == null) {
flash.error = message(code: "default.message.noRecordFound.label", default: "Error-Save-AuthRole-L21 : Record not found...!")
redirect(action: "create")
return
}
log.info "${roleInstance}";
if (roleInstance.hasErrors()) {
flash.error = "Error-Save-AuthRole-L27 : " + roleInstance.errors
redirect(action: "create", roleInstance: roleInstance)
return
}
try {
roleInstance.save failOnError: true
}
catch (Exception e) {
flash.error = "Error-Save-AuthRole-L36 : " + e
redirect(action: "create", roleInstance: roleInstance)
return
}
request.withFormat {
form multipartForm {
flash.success = message(code: "default.message.created", args: [message(code: "role.pageTitle.label", default: "AuthRole"), roleInstance.id])
redirect roleInstance
}
'*' { respond roleInstance, [status: CREATED] }
}
}
}
}
类AuthRoleControl实现可验证的
没有充分的理由让控制器实现可验证的
特性,这样做会导致问题
问题是您将获得两个名为
hasrerrors
,一个来自,一个来自,并且它们具有不同的返回类型。org.niport.auth.authroleconroller中是否有名为hasrerrors
的方法?如果否,控制器是否显式扩展任何类或实现任何特征?Hi@JeffScottBrown这只是与控制器关联的Spring错误交互的实例。但我可以将相关控制器的代码作为答案共享这与您的问题无关,但您添加的代码指向了另一个问题,即您的控制器将无法与并发请求兼容,因为您在AuthRoleControl
中处理currentUser
。除非将控制器配置为请求范围,否则这将被破坏,这是一个坏主意。从控制器中删除可验证的
不会消耗任何功能。它的出现并没有带来任何帮助。谢谢Jeff,我将删除可验证的界面,如果它有效,我现在就让你使用