Demandez aux extraits de code suivant:faces-config.xml Changement de 2,2 à 2,3 javax.el.PropertyNotFoundException des causes: Cible Inaccessible, identifiant 'haricot' résolu null
Bean:
import javax.faces.view.ViewScoped;
import javax.inject.Named;
@Named(value = "directoryBean")
@ViewScoped
public class DirectoryBean implements Serializable {
private static final long serialVersionUID = 1L;
....
}
visages -config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_3.xsd"
version="2.3">
....
</faces-config>
group.xhtml
<ui:composition ...>
<f:metadata>
<f:viewParam name="id" value="#{directoryBean.id}" />
</f:metadata>
</ui:composition>
En résultat obtenir l'exception:
javax.el.PropertyNotFoundException: /group.xhtml @6,64 value="#{directoryBean.id}": Target Unreachable, identifier 'directoryBean' resolved to null
Got it après avoir changé faces-config.xml du ver 2.2 à 2.3 ver la syntaxe.
Signification, avec des visages-config.xml avec le contenu suivant tout fonctionne très bien:
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
....
</faces-config>
JSF 2.3.2 déployé sur le serveur Payara 4.1.2.172 (Full), et a également ajouté à pom.xml avec portée "fournie".
....
<dependencies>
...
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.faces</artifactId>
<version>2.3.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.faces</groupId>
<artifactId>javax.faces-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
...
</dependencies>
....
J'ai vérifié toutes les solutions que j'ai pu trouver pendant plusieurs heures, y compris la version différente de beans.xml:
- initialement beans.xml n'a pas été présent dans le projet - question persistent ;
- ajouté vide beans.xml - problème persistant;
- ajouté beans.xml avec deux options différentes de bean-discovery-mode - "all" et "annoté" - problème persistant;
Contenu du \ WEB-INF \ beans.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
</beans>
sur les instances locales Testée de Payara 4.1.2.172, GlassFish 5 (java ver 1.8.0_144) et l'instance à distance de Payara 4.1 .2.172 (java ver 1.8.0_131).
Merci!
Remarque: Des exemples de projets comme celui-ci https://github.com/AnghelLeonard/JSF-2.3/tree/master/JSF23InjectInConverterValidator donnent la même erreur.
Avez-vous simplement changé le visages-config? Ce qui veut dire que vous étiez déjà sur une version JSF 2.3.2 et que vous venez de changer la face-config? – Kukeltje
Oui, exactement! Le retour de faces-config à la syntaxe JSF 2.2 résout le problème. –
Une petite recherche google rapide a abouti à ceci: https://stackoverflow.com/questions/44064995/jsf-2-3-not-finding-my-named-cdi-1-2-managed-bean. Utilisez-vous une librairie JSF 'externe' aussi? Un fourni dans votre webapp? – Kukeltje