Bonjour je veut implémenter les fonctionnalités CRUD pour une entité en JSF, avec les composants primefaces.
J'ai pu générer la table et l'interface de modification et l'interface d'ajout.
Le problème est que le formulaire de modification n'est pas rempli par la ligne sélectionné.
Je ne sais pas comment régler le problème. Ci dessous le code JSF:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html">
 
    <h:form>
        <p:dataTable id="airportTable" value="#{airportController.items}" var="item" style="border: 0px;" paginator="true"
                 sortBy="#{item.airportId}">
        <f:facet name="header">Airports</f:facet>
        <p:column sortBy="#{item.airportId}">
            <f:facet name="header">ID</f:facet>
            <h:outputText value="#{item.airportId}"/>
        </p:column>
        <p:column sortBy="#{item.name}">
            <f:facet name="header">Nom</f:facet>
            <p:commandLink value="#{item.name}" onclick="airportEditDlg.show();" update=":airportForm:airportEditForm">
                <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/>
            </p:commandLink>
        </p:column>
        <p:column sortBy="#{item.country}">
            <f:facet name="header">Pays</f:facet>
            <h:outputText value="#{item.country}"/>
        </p:column>
        <p:column sortBy="#{item.city}">
            <f:facet name="header">Ville</f:facet>
            <h:outputText value="#{item.city}"/>
        </p:column>
        <p:column>
            <f:facet name="header">Addesse</f:facet>
            <h:outputText value="#{item.hqAddress}"/>
        </p:column>
        <p:column>
            <p:commandLink value="Modifier" oncomplete="airportEditDlg.show();" update=":airportForm:airportEditForm">
                <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/>
            </p:commandLink>
        </p:column>
        <p:column>
            <p:commandLink value="Supprimer" update="airportTable">
                <f:setPropertyActionListener value="#{item}" target="#{airportController.selected}"/>
            </p:commandLink>
        </p:column>
        <f:facet name="footer">
            <p:commandButton title="Ajouter" value="Nouveau" icon="ui-icon-plus" 
                             update=":airportForm:airportCreateForm" oncomplete="airportCreateDlg.show();"/>
        </f:facet>
        <p:messages rendered="true"/>
    </p:dataTable>
    </h:form>
 
    <p:dialog widgetVar="airportEditDlg" modal="false" 
              header="Modifier" resizable="false">
        <h:form id="airportEditForm">
            <h:panelGrid columns="2">
                <h:outputText value="Pays :"/>
                <h:outputText value="#{airportController.selected.country}"/>
                <h:outputText value="Ville: "/>
                <h:outputText value="#{airportController.selected.city}"/>
                <h:outputText value="Nom: "/>
                <h:outputText value="#{airportController.selected.name}"/>
                <h:outputText value="Addresse: "/>
                <h:outputText value="#{airportController.selected.hqAddress}"/>
                <f:facet name="footer">
                    <p:commandButton value="Valider" icon="ui-icon-disk" action="#{airportController.update()}"/>
                </f:facet>
            </h:panelGrid>
        </h:form>
    </p:dialog>
 
    <p:dialog widgetVar="airportCreateDlg" header="Nouveau aeroport">
        <h:form id="airportCreateForm">
        <h:panelGrid columns="2">
            <h:outputText value="Pays"/>
            <p:inputText  value="#{airportController.newAirport.country}"/>
            <h:outputText value="Ville"/>
            <p:inputText value="#{airportController.newAirport.city}"/>
            <h:outputText value="Nom"/>
            <p:inputText value="#{airportController.newAirport.name}"/>
            <h:outputText value="Addresse"/>
            <p:inputText value="#{airportController.newAirport.hqAddress}"/>
            <f:facet name="footer">
                <p:commandButton value="Valider" process="@this" actionListener="#{airportController.saveNew()}" oncomplete="airportCreateDlg.hide();"/>
                <p:commandButton value="Reset" process="@this" actionListener="#{airportController.resetSelected}" update="airportCreateForm"/>
            </f:facet>
        </h:panelGrid>
        </h:form>
    </p:dialog>
</ui:composition>