当我用不同的角色更新用户时,出现这两个错误:
无法将属性“secUser”的类型 [java.lang.String] 的值转换为所需类型 [rms.SecUser]:未找到匹配的编辑器或转换策略]
无法将属性“secRole”的类型 [java.lang.String] 的值转换为所需类型 [rms.SecRole]:未找到匹配的编辑器或转换策略]
我正在使用 grails spring 安全插件。
这是我的 Controller :
def updateSecUserSecRole(Long id, Long version) {
def secUserSecRoleInstance = SecUserSecRole.get(id)
if (!secUserSecRoleInstance) {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'secUserSecRole.label', default: 'SecUserSecRole'), id])
redirect(action: "listSecUserSecRole")
return
}
if (version != null) {
if (secUserSecRoleInstance.version > version) {
secUserSecRoleInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
[message(code: 'secUserSecRole.label', default: 'SecUserSecRole')] as Object[],
"Another user has updated this SecUserSecRole while you were editing")
redirect(action: "listSecUserSecRole")
return
}
}
secUserSecRoleInstance.properties = params
if (!secUserSecRoleInstance.save(flush: true)) {
secUserSecRoleInstance.errors.allErrors.each{
println it
}
redirect(action: "listSecUserSecRole")
return
}
flash.message = message(code: 'default.updated.message', args: [message(code: 'secUserSecRole.label', default: 'SecUserSecRole'), secUserSecRoleInstance.id])
redirect(action: "listSecUserSecRole")
}
这是编辑 gsp 中我的表单字段的片段:
<g:select class="select2-edit" style="width:30% !important;" id="secUser.id" name="secUser" from="${rms.SecUser.list()}" optionKey="id" optionValue="username" required="" value="${secUserSecRoleInstance?.secUser?.id}" />
<g:select id="secRole.id" name="secRole" from="${rms.SecRole.list()}" optionKey="id" optionValue="authority" required="" value="${secUserSecRoleInstance?.secRole?.id}" />
最佳答案
我怀疑,在你的表单中,名称应该与 ID 匹配。所以,
id="secUser.id" name="secUser.id"
id="secRole.id" name="secRole.id"
更具体地说,表单是使用 name
值而不是 id
提交的
关于java - Spring security 无法将属性 'secRole' 的类型 [java.lang.String] 的值转换为所需类型 [SecRole],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978788/