我正在看樣品寵物診所grails應用程序github。良好的可維護的方式添加一個保存方法grails服務
它具有用於創建寵物稱爲PetclinicService
具有用於添加寵物的方法的服務:
Pet createPet(String name, Date birthDate, long petTypeId, long ownerId) {
def pet = new Pet(name: name, birthDate: birthDate, type: PetType.load(petTypeId), owner: Owner.load(ownerId))
pet.save()
pet
}
正被從控制器使用像這樣:
def pet = petclinicService.createPet(params.pet?.name, params.pet?.birthDate,
(params.pet?.type?.id ?: 0) as Long, (params.pet?.owner?.id ?: 0) as Long)
我很想知道這是否是在Grails中保存某些東西的最佳方式?通過這種方法,如果我在Pet
域中添加了另一個字段,例如String color
,那麼我需要觸摸三個類(Pet, PetController, and PetclinicService
)才能使更改完成。
有沒有一種方法可以將整個params
對象發送到服務中並讓它自動映射到域?
因此,在服務中使用'params'映射壞了實踐? 與控制器中的「params」一起工作會讓人感覺不舒服嗎? – havenchyk 2014-04-30 09:35:28