2013-03-11 22 views
6

Mam bardzo prostą funkcję, która zdefiniować następująco:Groovy/Grails pomocą mapy jako parametr funkcji

def mySimpleFunction(Map myMap) { 
    // Function logic here... 
    } 

Jednak przy próbie kompilacji tego, pojawia się komunikat ostrzegawczy i budować wyjątek, który mówi, że: akcja [mySimpleFunction] akceptuje parametr typu [java.util.Map], który nie został oznaczony jako Validateable.

Jak mogę oznaczyć tę funkcję jako sprawdzoną? Zaimportowałem kod org.codehaus.groovy.grails.validation.Validateable

i zaznaczyłem moją klasę jako @Validatable.

Co powinienem robić inaczej, aby uzyskać dostęp do aplikacji?

Z góry dziękuję!

+0

Gdzie jest ta funkcja? Kontroler, usługa itp.? – Gregg

+0

Jest w kontrolerze –

+0

Oznacz metodę jako @Validatable. Nie jestem pewien, dlaczego tak się dzieje, poza magiczną mapą/paramami związanymi z grailsami w kontrolerach. – Gregg

Odpowiedz

18

Jeśli jest to metoda pomocnicza, uczyń ją prywatną. W Grails 2.0+ zakłada się, że metody kontrolerów publicznych to akcje, a zakłada się, że argumenty są wiążące. Oznacza to, że muszą to być typy liczb, boolean, String itp. Lub klasa obiektu komend.

Klasy obiektów poleceń są automatycznie weryfikowane, jeśli są zdefiniowane w pliku klasy kontrolera, a jeśli są zdefiniowane w innym miejscu, należy je opatrzyć adnotacją jako @Validateable.

Ponieważ jest to metoda pomocnika, a nie działania, po prostu sprawiają, że prywatne (zwłaszcza, że ​​nie może być wywołana z innej klasy i tak):

private mySimpleFunction(Map myMap) { 
    // Function logic here... 
} 
+0

Dzięki Burt! Doceniam to. Czekam z niecierpliwością na czytanie Twojej nowej książki, gdy tylko będzie ona dostępna. –

Powiązane problemy