À l'aide de grain de service dans le domaine de la classe
Je veux utiliser un service dans mon Graal de l'application. Cependant, il est toujours null. Je suis à l'aide de Graal de la version 1.1. Comment puis-je résoudre ce problème?
Exemple de code:
class A{
String name;
def testService;
static transients=['testService']
}
Puis-je utiliser un service à l'intérieur d'un domaine classe?
Vous devez vous connecter pour publier un commentaire.
Qui devrait fonctionner. Notez que depuis que vous êtes à l'aide de 'def' vous n'avez pas besoin de l'ajouter à l'transitoires de la liste. Êtes-vous essayer d'accéder à partir d'une méthode statique? C'est un champ d'instance, de sorte que vous ne pouvez y accéder qu'à partir d'instances.
Le cas d'utilisation typique pour l'injection d'un service dans un domaine classe est pour validation. Un validateur personnalisé est transmis le domaine de l'instance de classe en cours de validation, de sorte que vous pouvez accéder au service à partir de:
Réponse courte est. Oui, vous pouvez utiliser le service à l'intérieur du domaine de la classe.
Voici un exemple de code où domaine de la classe obtient l'accès à l'authentifier service de acegi plugin. Il fonctionne sans problèmes.
Pour résumer Burt et Remis réponses:
Dans le domaine de validateur personnalisé, vous devez utiliser
obj.testService
plutôt que d'utilisertestService
directement. Si vous voulez utiliser le service dans le domaine de validateur personnalisé:Mais dans d'autres méthodes, y compris
afterInsert
et d'autres privés/publics méthodes, l'utilisationtestService
est fine.