Grails 无法重定向对象[ManageVehicle:(未保存)],该对象不是域或没有标识符。改用显式重定向
这是我的地盘Grails 无法重定向对象[ManageVehicle:(未保存)],该对象不是域或没有标识符。改用显式重定向,grails,gorm,grails-domain-class,grails-controller,Grails,Gorm,Grails Domain Class,Grails Controller,这是我的地盘 import org.apache.commons.lang.builder.EqualsBuilder import org.apache.commons.lang.builder.HashCodeBuilder class ManageVehicle implements Serializable { String vehicle Short truckKey=0 Short siteID Integer unitID String w
import org.apache.commons.lang.builder.EqualsBuilder
import org.apache.commons.lang.builder.HashCodeBuilder
class ManageVehicle implements Serializable {
String vehicle
Short truckKey=0
Short siteID
Integer unitID
String wheelConfig
String model
Short period=0
String usid=UUID.randomUUID().toString()
//static belongsTo = [wheelConfig : TTType,model:TTModel]
int hashCode() {
def builder = new HashCodeBuilder()
builder.append truckKey
builder.append siteID
builder.toHashCode()
}
boolean equals(other) {
if (other == null) return false
def builder = new EqualsBuilder()
builder.append truckKey, other.truckKey
builder.append siteID, other.siteID
builder.isEquals()
}
static mapping = {
table 'TF_Truck'
version false
truckKey column :'TruckKey'
siteID column :'SiteID'
id composite:['truckKey','siteID']
vehicle column: 'TruckID' ,sqlType: 'nvarchar'
wheelConfig column: 'TypID',sqlType: 'tinyint'
model column: 'ModID' ,sqlType: 'tinyint'
unitID column: 'McmID',sqlType: 'tinyint'
period column: 'Period'
usid generator: 'assigned', column:'USID', sqlType:'uniqueidentifier'
}
static constraints = {
period nullable: false
truckKey nullable: false
siteID nullable: false
}
}
我在控制器中的保存方法是
def save(ManageVehicle manageVehicleInstance) {
manageVehicleInstance.siteID=RequestContextHolder.currentRequestAttributes().getAttribute("SiteID",RequestAttributes.SCOPE_SESSION) as Short
if (manageVehicleInstance == null) {
notFound()
return
}
if (manageVehicleInstance.hasErrors()) {
respond manageVehicleInstance.errors, view:'create'
return
}
manageVehicleInstance.save(flush:true,failOnError: true)
request.withFormat {
form {
flash.message = message(code: 'default.created.message', args: [message(code: 'manageVehicle.label', default: 'Manage Vehicle'), manageVehicleInstance.id])
redirect manageVehicleInstance
}
'*' { respond manageVehicleInstance, [status: CREATED] }
}
}
当我在此域上应用保存操作时,出现以下异常
Message: Cannot redirect for object [ManageVehicle : (unsaved)] it is not a domain or has no identifier. Use an explicit redirect instead
给我建议一些解决办法 我猜Grails无法在重定向中处理复合id。 我有两个选择来解决这个问题
重定向(操作:'show',参数:[truckKey:manageVehicleInstance.truckKey,siteID:manageVehicleInstance.siteID])
和2。选项您可能还必须使用复合id实现自定义对象加载到“显示”操作中,如
def manageVehicleInstance=ManageVehicle.findByTruckKeyAndSiteID(params.truckKey,params.siteID)
如果您将控制器代码共享为well@SAGARMANE,我在问题中更新了。重定向manageVehicleInstance是什么意思?我以前从未见过这样的代码。@codehx,所有工作正常的事情就是我无法保存数据。我在域中使用复合键。