2009-11-18 7 views
0

J'utilise le printemps dans ma demande, Quand je suis le chargement du springApplicationContext pour obtenir les haricots que je reçois les erreursexception de propriété non valide au printemps

causés par: org.springframework.beans.InvalidPropertyException: Propriété non valide "abc"

Même s'il existe une propriété abc et le paramètre pour cette propriété dans le bean.

C'est une erreur bizarre je sais, mais je ne peux pas savoir où est le problème.

Des pointeurs seront utiles.

Merci! Pratik

+4

Etes-vous sûr que l'exception est pour le bean avec 'abc' setter? Pouvez-vous poster une trace de pile complète ainsi que des fragments appropriés de la classe de haricots et du contexte printanier? – ChssPly76

+0

Est-ce que votre setter 'public'? –

+0

Publiez la classe et le fichier XML de configuration de Spring pour pouvoir voir les deux. – duffymo

Répondre

4

Assurez-vous que la propriété possède à la fois un accesseur et un accesseur public. Dans le cas d'une propriété AnyObject il devrait ressembler à:

private AnyObject abc; 
public AnyObject getAbc() { return abc; } 
public void setAbc(AnyObject abc) { this.abc = abc; } 

Il y a cependant un cas particulier: dans le cas d'une propriété boolean il devrait ressembler à:

private boolean abc; 
public boolean isAbc() { return abc; } 
public void setAbc(boolean abc) { this.abc = abc; } 

Notez le préfixe is au lieu de get .

+2

Getter n'est pas ** nécessaire ** S'il est ** déclaré **, il doit en effet être conforme à javabean spec (btw, 'isXXX' est aussi optionnel pour les booléens,' getXXX' fonctionne exactement comme bien). – ChssPly76

-1

Je me souviens de la question similaire sur les forums de printemps. Il a été découvert qu'il y avait une signature d'un setter comme

public class MyClass { 

    private Aggregated field; 

    public MyClass setField(Aggregated field) { 
     this.field = field; 
    } 
} 

I.e. le type de retour du setter n'était pas vide. Quoi qu'il en soit, Spring utilise la norme Instrospector pour traiter les propriétés de la classe. Essayez-le avec votre classe et vérifiez si la propriété target est trouvée.

Questions connexes