yeniden derlendikten sonra çalışır Benim son sınıfları 2.3.0 proje içinde benim controller
daha fazla DRY tutmak için bir yardımcı sınıf karıştırmak için @Mixin
ek açıklama kullanıyorum. Bir denetleyici recompile zorlamak için kontrolörün içinde bazı değişiklikler yapılmış iseDenetleyici @Mixin sadece çalışan uygulama
mixin sadece çalışıyor. İlk derleme (grails run-app
) yardımcı karışık değil sonra - Bir MissingMethodException
yardımcı sınıfından bir yöntemi erişmeye çalışıyor olsun. İşte
src/groovy
witin yardımcısıdır: kullandığı
class ProjectHelper {
def withProject(id, Closure c) {
def project = Project.get(id)
if (project) {
c.call project
} else {
flash.message = 'Project not found!'
render view: 'myView'
return
}
}
}
Ve (biri) controller
ProjectHelper
: Ben, I grails clean
kullanarak ve uygulamayı başlatma projeyi cleane
@Mixin(ProjectHelper)
class ProjectController {
def index() {
withProject params.projectId, {project ->
// do something with the project
}
}
}
project/index
eriştikten sonra aşağıdaki hatayı alıyorum:
MissingMethodException occurred when processing request:
[GET] /<myApp>/project/
No signature of method: <myPackage>.withProject() is applicable for argument types:
(java.lang.String, <myPackage>.ProjectController$_index_closure1_closure10) values:
[1, <myPackage>[email protected]]
ReportController
'daki bazı değişikliklerden sonra (ör. tek bir alan ekleme) grails 2 kaynak dosyasını derler ve withProject
yöntemi kullanılabilir. project/index
erişim beklendiği gibi çalışır.
yanlış burada ne oluyor? Bu bir hata mı yoksa bir şeyi mi özlüyorum?
Güncelleme
Bu tamamen grails.util.Mixin
kullanarak bana nedeniyle (benim durumumda: flash
) sınıf özelliklerinde karışık erişimi eksik başka istisna (MissingPropertyException
) verir, cevapsız çıkıyor (JIRA this issue bakınız) groovy.lang.Mixin
(yeniden derleme sonrasında) ile çalışıyor.
elle/yeniden derlemek zamanında groovy.lang.Mixin
mixin/enjekte yoksa giderilen sorun kadar else
kısmı için işleyen diğer bir hatayı bulmak zorunda yapmanın bir yolu var mı?
Herhangi bir öneriniz var mı? katmalar kullanarak benzer bir kod yeniden desen izlerken
@Mixin? groovy.lang.Mixin' veya grails.util.Mixin'? Bir groovy mixin ise diğerini kullanmaya çalışın. – dmahapatro
İkisini de denedim. Ne biri ne de diğeri çalıştı. – aiolos
@dmahapatro Tekrar kontrol ettim! Dün biraz geç oldu - grails.util'i özledim.Mixin başka bir istisna verir. Sorumu güncelleyeceğim ... – aiolos