SpelEvaluationException: EL1007E:(pos 43): Champ ou une propriété "groupe" ne peut pas être trouvé sur null
J'ai de PRINTEMPS MÉTHODE de sécurité entièrement configuré pour mon application web. (avec PRÉ/POST annotations activé).
Cependant, récemment, j'ai rencontré un étrange problème avec eux. Résumé comme suit:
-
Résumé de POJO
//User Class public class User { int id; String name; //getters and setters } //Group Class public class Group { int id; String name; //getters and setters } //GroupMembership class public class GroupMembership { private int id; private User user; private Group group; //getters and setters }
-
PreAuthorise filtre sur la méthode .
@PreAuthorize("canIEditGroupProfile(#membership.group.id)") public int updateGroupMembership(GroupMembership membership) throws GroupsServiceException;
Au passage d'une entièrement rempli GroupMembership
objet (utilisateur et groupe de compositions présent), le filtre de sécurité throws exception suivante:
errorMessage: "Failed to evaluate expression
canIEditGroupProfile(#membership.group.id)'"
À creuser dans l'exception:
La cause se trouve être:
org.springframework.expression.spel.SpelEvaluationException:
EL1007E:(pos 33): Field or property 'group' cannot be found on null
Veuillez fournir des indications pour traiter le même.
- Vérifier setter/getter et assurez-vous qu'ils sont corrects
- Soit
null
est passé en argument ou le code est compilé sans les informations de débogage.
Vous devez vous connecter pour publier un commentaire.
lecture/définition semble très bien... également aucun cas de
null
.Cependant une observation intéressante; celle-ci me donne une erreur:
Cela fonctionne bien:
J'ai observé, le nom du paramètre est le décalage dans le cas de la première (j'.e Service et ServiceImpl les deux ont eu différents noms de paramètre).
Maintenant le maintien de l'uniformité, le problème semble être résolu.
J'ai eu le même problème dans mon Printemps de Démarrage de l'application. Il s'est avéré que j'ai été la compilation sans mon symboles de débogage de l'information, comme il est mentionné dans un commentaire ci-dessus. Je tiens à faire remarquer que j'ai pu résoudre le problème de deux façons:
1.(Mon préféré):
Il suffit d'inclure dans votre pom.xml --> plugins
J'ai trouvé vraiment intéressant ce lien pour en savoir plus sur la question.
Espère que cela aide!
Comme @zeroflagL demandé: Êtes-vous compilation sans les informations de débogage? C'est probablement le même problème que printemps @Cacheable avec Ehcache, spel trouver nulle pour objet valide et Printemps @Cacheable avec SpEL clés: renvoie toujours null – vérifiez votre POM (ou de configuration Eclipse ou autre) pour votre configuration de débogage, par exemple
<debug>false</debug>
dans lemaven-compiler-plugin
.