Erreur avec Named au lieu de ManagedProperty
Bonjour,
Je crée un nouveau projet JSF.
J'ai réussi à faire un build avec Maven d'une demo mais pas le test avec Wildfly intégré à Eclipse, mais le problème que je rencontre actuellement est le suivant:
Lorsque je cherche à faire un projet s'inspirant de cette demo en créant un formulaire d'inscription pour étudiants: j'ai une version avec certains import javax.faces qui compile et une autre avec jakarta.* qui elle ne compile pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<h:head>
<meta charset="UTF-8">
<title>Insert title here</title>
</h:head>
<h:body>
<f:view>
<h:form>
<h:panelGrid columns="2">
<h:outputText value="Entrer votre prenom" />
<h:panelGroup>
<h:inputText id="firstname" value="#{studentControllerBean.firstName}" required="true">
</h:inputText>
</h:panelGroup>
<h:outputText value="Entrer votre nom de famille" />
<h:panelGroup>
<h:inputText id="lastname" value="#{studentControllerBean.lastName}" required="true">
</h:inputText>
</h:panelGroup>
<h:outputText value="Selectionner un cursus (abonnement)" />
<h:panelGroup>
<h:selectOneListbox id="abonne" value="#{studentControllerBean.abonne}">
<f:selectItems value="#{studentControllerBean.abonneItems}"/>
</h:selectOneListbox>
</h:panelGroup>
</h:panelGrid>
<h:commandButton value="Valider" action="#{studentControllerBean.registeroutcome}"/>
</h:form>
</f:view>
</h:body>
</html> |
Le code simplifié de mon bean:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@ManagedBean
@RequestScoped
public class StudentControllerBean {
public String firstName;
public String lastName;
public int abonne;
public Student registerStudent;
@Inject
public StudentDAO studentDAO;
public List<Student> students;
// en dur pour l'instant
private SelectItem[] abonneItems = {
new SelectItem(1, "science"),
new SelectItem(2, "engineering"),
new SelectItem(3, "building") }; |
si je remplace les imports (en commentaire quand ça marchait, et decommenté la nouvelle version
Code:
1 2 3 4 5
|
import javax.faces.bean.ManagedBean;
///import jakarta.inject.Named; // prefer this on : jakarta CDI
//import javax.faces.bean.RequestScoped;
import jakarta.enterprise.context.RequestScoped; |
ça ne compile plus. J'obtientdes 'cannot find symbol'.
Que faire, car j'ai vu que la version qui marche est deprecated.
Mon pom:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish/jakarta.faces -->
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>jakarta.faces</artifactId>
<version>4.0.0-M1</version>
<scope>provided</scope>
</dependency> |
Question: est ce qu'il faut que j'utilise jakarta au lieu de javax seulement dans le pom et chercher une autre cause à mon problème de déploiement?
(J'ai regardé des fils de discussion https://stackoverflow.com/questions/...ries-via-maven)
Nouveau: compile maintenant mais le serveur Wildfly ne charge pas l'application
Bonjour,
J’essaie toujours de faire marcher un ancien projet ‘Biblio livres’ avec JSF. Après un première tentative avec JSF 2.2 et Tomcat-9 je me suis tourné vers le tutoriel de ‘balusC- omnifaces’ en faisant une meilleure approche avec JSF 2.3 et un serveur wildfly. Pourtant j’obtiens toujours une erreur « not found » . J’ai re-regardé si tout ce qui est demandé dans le tutoriel est bien configuré :
- une seule dependence du pom : jakarta.jakartaee-api
- Java compiler > 1.8 dans Eclipse java facets
- Serveur Wildfly bien associé au projet dans target runtimes.
La demo fait intervenir un seul bean dans lequel est stocké lors de la validation de la page le contenu d’un champ input et un message constant est renvoyé.
Je demande d’abord ce qu’il faut que je fournisse comme info supplémentaires qui pourrait guider vers une solution. Le code est classique, je donne le contenu de la future page login :
SVP si vous avez des conseils à me donner
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <h:body>
<h1>Authentication</h1>
</h:form>
<h:panelGrid columns="2">
<h:outputText value="Entrer votre nom" />
<h:panelGroup>
<h:inputText id="username" value="#{empControllerBean.username}" required="true"}"/>
</h:panelGroup>
<h:panelGrid columns="2">
<h:outputText value="Entrer votre email" />
<h:panelGroup>
<h:inputText id="emailaddr" value="#{empControllerBean.emailaddr}" required="true"}"/>
</h:panelGroup>
<h:panelGrid columns="2">
<h:outputText value="Entrer votre mot de passe" />
<h:panelGroup>
<h:inputText id="password" value="#{empControllerBean.password}" required="true"}"/>
</h:panelGroup>
<h:commandButton value="Valider" action="#{empControllerBean.dologin}"/>
<h:outputText id="output" value="#{empControllerBean.message}" />
</h:form>
</h:body>
</html> |