web-dev-qa-db-fra.com

Identifier et résoudre javax.el.PropertyNotFoundException: Target Inreachable

Lorsque vous essayez de référencer un bean géré dans EL comme so so #{bean.entity.property}, une exception javax.el.PropertyNotFoundException: Target Unreachable est parfois générée, généralement lorsqu'une propriété de bean doit être définie ou lorsqu'une action de bean doit être appelée.

Il semble y avoir cinq types de messages différents:

  1. Cible inaccessible, l'identifiant 'bean' résolu en null
  2. Cible inaccessible, 'entité' a renvoyé la valeur null
  3. Cible inaccessible, 'null' a renvoyé la valeur null
  4. Cible inaccessible, '' 0 '' a renvoyé null
  5. Cible inaccessible, 'BracketSuffix' a renvoyé la valeur null

Que signifient-elles? Comment sont-ils causés et comment doivent-ils être résolus?

104
BalusC

Pour ceux qui sont encore bloqués ...

En utilisant NetBeans 8.1 et GlassFish 4.1 avec CDI, pour une raison quelconque, je n’avais ce problème que localement, pas sur le serveur distant. Qu'est-ce que l'astuce:

-> en utilisant javaee-web-api 7.0 au lieu de la version de pom par défaut fournie par NetBeans, qui est javaee-web-api 6.0, ainsi:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
    <type>jar</type>
</dependency>

-> téléchargez ce fichier javaee-web-api-7.0.jar en tant que lib sur le serveur (dossier lib du dossier domain1) et redémarrez le serveur.

6
seinecle

J'ai décidé de partager ma conclusion sur cette erreur après l'avoir résolue moi-même.

Tout d'abord, les solutions BalusC doivent être prises au sérieux, mais Netbeans est un autre problème à prendre en compte, en particulier lors de la création d'un Enterprise Application Project (EAR) utilisant Maven.

Netbeans génère un fichier POM parent , un projet EAR , un projet EJB et un projet WAR . Tout le reste de mon projet fonctionnait bien, et j’ai presque supposé que le problème était un bogue de GlassFish 4.0 (j’ai dû l’installer et le brancher sur Netbeans) car GlassFish 4.1 contient un bogue Weld CDI qui rend le logiciel intégré GlassFish 4.1 in Netbeans 8.0.2 inutilisable sauf par un correctif.

Solution:

Pour résoudre le "Cible inaccessible, l'identifiant 'bean' résolu en null" Error-

I Cliquez avec le bouton droit sur le projet POM parent et sélectionnez Propriétés . Une boîte de dialogue Propriétés du projet apparaît, cliquez sur "Sources", vous serez surpris de voir le " Format source/binaire " défini sur 1.5 et " Encodage " défini sur Windows 1250 . Modifiez le " Format source/binaire "à 1,6 ou 1,7, selon votre préférence pour rendre votre projet conforme à CDI, et" Encodage "à UTF-8. 

Faites la même chose pour tous les autres sous-projets (EAR, EJB, WAR) s'ils ne sont pas déjà compartimentables . Exécutez votre projet et vous n'obtiendrez plus cette erreur. 

J'espère que cela aide quelqu'un qui a une erreur similaire. 

2
Gbenga Adebowale

J'ai décidé de partager ma solution, car bien que de nombreuses réponses fournies ici aient été utiles, je rencontrais toujours ce problème. Dans mon cas, j'utilise JSF 2.3, jdk10, jee8, cdi 2.0 pour mon nouveau projet et j'ai exécuté mon application sur wildfly 12, en démarrant le serveur avec le paramètre standalone.sh -Dee8.preview.mode = true comme recommandé sur le site Web de wildfly. . Le problème avec "bean résolu à null" a disparu après le téléchargement de wildfly 13. Le téléchargement exact de la même guerre sur wildfly 13 a tout fait fonctionner.

1
Urszula Styś

J'utilise wildfly 10 pour le conteneur javaee. J'avais rencontré le problème "Target Inreachable, 'entity" renvoyé null ". Merci pour les suggestions de BalusC, mais le problème que je viens de résoudre a été expliqué. Utilisation accidentelle de "import com.Sun.istack.logging.Logger;" au lieu de "import org.jboss.logging.Logger;" causé CDI mis en œuvre JSF EL . Espérons que cela aide à améliorer la solution. 

0
Osman Corluk

Le problème dans mon cas était que j'inclus un constructeur prenant des paramètres mais pas un constructeur vide avec l'annotation Inject, comme tel. 

@Inject public VisitorBean() {}

Je viens de le tester sans constructeur et cela semble fonctionner aussi.

0
gregam3

Pour 1. topic (Target Inreachable, identifiant 'bean' résolu en null);

J'ai vérifié les réponses valables du @BalusC et des autres participants, mais je dépasse ce problème comme celui-ci dans mon scénario. Après la création d'un nouveau xhtml avec un nom différent et la création d'une classe de bean avec un nom différent, j'ai ensuite écrit (sans copier-coller) les codes étape par étape dans la nouvelle classe de bean et le nouveau fichier xhtml.

0
oguzhankinik

Quant à # 2, dans mon cas, il est venu comme par magie après avoir remplacé 

<body>

tag avec 

<h:body>

Après avoir effectué plusieurs projets (plus simples, pour être honnête) de JSF, je ne me souvenais plus d’avoir fait autre chose pour le configurer, et j’ai eu ce genre d’erreur pour la première fois. Je faisais une page de connexion très basique (nom d'utilisateur, mot de passe, utilisateur Bean ...) et je configurais tout comme d'habitude. La seule différence que j'ai remarquée concerne les étiquettes mentionnées ci-dessus. Peut-être que quelqu'un trouve cela utile.

0
Gishas

J'ai eu le même problème. La solution s'est avérée beaucoup plus simple. Il semble qu’un datatable veut que la méthode soit sous la forme d’un getter, c’est-à-dire getSomeMethod (), pas simplement someMethod (). Dans mon cas, dans le datatable, j'appelais findResults. J'ai changé la méthode dans mon bean de sauvegarde en getFindResults () et cela a fonctionné. 

Un commandButton fonctionnait find sans le get, ce qui ne le rendait que plus déroutant.

0
user6627139

Dans mon cas, j'ai commis une erreur de sort dans @Named ("beanName"), c'était supposé être "beanName", mais j'ai écrit "beanNam", par exemple.

0
lfvv