2015-03-04 14 views
6

Chciałbym skorzystać z Groovy cechy w kontrolerze Grails zgodnie z poniższym:Użyj Groovy cechę w kontrolerze Grails

trait ColumnSelectionController { 
    def selectColumns() { 
     //Do something here 
    } 
} 

class MyController implements ColumnSelectionController { 
    def index() { 
     //Calculate list model 
    } 
} 

Gdy uruchomię to w Grails jednak „selectColumns” działanie nie jest widoczny i otrzymuję odpowiedź 404 od Grails. Podejrzewam, że jest coś, co muszę zrobić z tą cechą, że metody zdefiniowane w niej są rozpoznawane jako działania w klasie implementującej. Ktoś wie, co to może być?

EDIT 1:

Dalsze informacje: cecha jest określona w src/porywające nie w GRAILS aplikacji/regulatorów i dlatego nie jest określona jako artefakt.

EDIT 2:

Ponadto, jeśli mogę zmienić cechę do klasy, oznaczyć ją z @Artefact adnotacji i zmienić MyController rozszerzyć tę klasę, wszystko działa zgodnie z oczekiwaniami. Próba użycia adnotacji @Artefakt do cechy nic nie robi (bez wielkiej niespodzianki).

+0

Jaką wersję Grails używasz? Jakiej wersji Groovy używasz? –

+0

Używam Grails 2.4.3 i Groovy 2.3.3. Cechy działają dobrze w innych częściach aplikacji i wszystkie metody cech są widoczne jako metody, po prostu nie są podłączone do punktów końcowych działania. –

+0

rozwiązałeś ten problem? mamy ten sam numer – droggo

Odpowiedz

6

Wystarczy zdefiniować @Action adnotacji nad określoną metodą w cechy, będzie to uczynić tę metodę pracy jako działania regulatora (gdy cechy dostać wdrożone)

import grails.web.Action 

trait ColumnSelectionController { 

    @Action 
    def selectColumns() { 
    //Do something here 
    } 
} 

nadzieję, że to pomaga.

Powiązane problemy