[JSF] problème de datatable et commandLink

Signaler
Messages postés
1
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
31 mai 2005
-
dalidali86
Messages postés
28
Date d'inscription
mardi 14 juillet 2009
Statut
Membre
Dernière intervention
4 février 2010
-
J'ai créé une datatable. Seulement j'aimerais maintenant créé un lien
sur les attributs de la première colonne de cette table. J'ai essayé,
la balise [.. elle ne fait rien. Quand à la balise
commandLink, elle ne créee pas de lien vers la page voulue mais
toujours la même.

Voici le code de la datatable :



<f:view>
<h:dataTable id="items"
columnClasses="list-column-center, list-column-center"
headerClass="th"
rowClasses="tr0, tr1"
styleClass="list-background"
value="#{expert.items}"
var="item"
bgcolor="black"
cellpadding="1"
cellspacing="1"
width="640">
<h:column >
<f:facet name="header">
<h:outputText value="Code" />
</f:facet>
<h:commandLink action="show">
<h:outputText value="#{item.code}"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nom"/>
</f:facet>
<h:outputText value="#{item.nom}"/>
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="Prenom" />
</f:facet>
<h:outputText id="prenom" value="#{item.prenom}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="Téléphone" />
</f:facet>
<h:outputText id="tel" value="#{item.telephonePrincipal}" />
</h:column>
<h:column >
<f:facet name="header">
<h:outputText value="Mail" />
</f:facet>
<h:outputText id="mail" value="#{item.mailPrincipal}" />
</h:column>
</h:dataTable>
</f:view>




La partie du fichier faces-config.xml qui devrait créer les liens :

<navigation-rule>
<from-view-id>/experts.jsp</from-view-id>
<navigation-case>
<from-outcome>nouveau</from-outcome>
<to-view-id>/expert_nouveau.jsp</to-view-id>
<from-outcome>show</from-outcome>
<to-view-id>/expert_fiche_modif.jsp</to-view-id>
</navigation-case>
</navigation-rule>






Ensuite, je voudrais savoir comment récurer la valeur de l'attribut sur
lequel on vient de cliquer ou l'objet correspondant à la ligne de
l'attribut comme j'avais put le faire en JSP :

<td width="56">]"><%=tableau[0]%></td>

12 réponses

Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
23 septembre 2009

Quarter-Pounder with cheese

il faut bien utiliser commandLink, mais avec une loi de navigation (que tu rajoutes dans faces-config
Messages postés
6
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
28 septembre 2009

Svp , je cherche à afficher les données d'une table dans ma base de données dans une page JSF ???
J ai réussi à faire la connexion et j obtient même resulset mais cmt faire pour afficher les attributs obtenus dans la classe java dans la page JSP ???
Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
23 septembre 2009

eh bien comme c'est dit ci-dessus !
Messages postés
6
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
28 septembre 2009

Wi merci tcharl , j ai réussi à afficher la table mais lorsque je veux supprimer des lignes de cette table , l'opération de suppression se fait sans problème mais j'obtient deux tables l'une ou les lignes supprimées et l autre avant la suppression, si alors tu peux me dire cmt je peux afficher uniquement la table apres l'opération de suppression uniquement ??
Messages postés
28
Date d'inscription
mardi 14 juillet 2009
Statut
Membre
Dernière intervention
4 février 2010

Bonjour ,

j'ai un travail similaire à toi , mais c'a pas marché . Je veut afficher une table de ma base de données . J'ai utilisé donc un datatable ,je veut mettre un commandlink devant chaque ligne pour la supprimer . Mais le probléme c'est que lorsque je clique sur ce commandlink rien ne se passe .

le code JSF est le suivant :

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<f:view>
<html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        
            <h:outputText value="List of Clients"/>
Create a New Account


        <h:form id="create">

            <h:form>
                <h:outputText value="List"/>

                <h:dataTable value="#{metier.mylist}" var="item">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Id"/>
                        </f:facet>
                        <h:outputText value="#{item.id}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Code"/>
                        </f:facet>
                        <h:outputText value="#{item.code}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Firstname"/>
                        </f:facet>
                        <h:outputText value="#{item.firstname}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Login"/>
                        </f:facet>
                        <h:outputText value="#{item.login}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Lastname"/>
                        </f:facet>
                        <h:outputText value="#{item.lastname}"/>
                    </h:column>
                     <h:column>
                        <f:facet name="header">
                            <h:outputText value="Balance Point"/>
                        </f:facet>
                        <h:outputText value="#{item.balpt}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Rightslevel"/>
                        </f:facet>
                        <h:outputText value="#{item.rightslevel}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Mobilephone"/>
                        </f:facet>
                        <h:outputText value="#{item.mobilephone}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Password"/>
                        </f:facet>
                        <h:outputText value="#{item.password}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Department"/>
                        </f:facet>
                        <h:outputText value="#{item.department}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Company"/>
                        </f:facet>
                        <h:outputText value="#{item.company}"/>
                    </h:column>
                    
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Cams"/>
                        </f:facet>
                        <h:outputText value="#{item.cams}"/>
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Title"/>
                        </f:facet>
                        <h:outputText value="#{item.title}"/>
                    </h:column>
                    
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Insertiondate"/>
                        </f:facet>
                        <h:outputText value="#{item.insertiondate}">
                            <f:convertDateTime pattern="MM/dd/yyyy HH:mm:ss" />
                        </h:outputText>
                    </h:column>
        <h:column>

           <h:commandLink id="edit"
                           value="Edit"
                           action="#{metier.edit}">

<f:param name="loginn" value="#{item.login}"/>
           </h:commandLink>
</h:column>
    <h:column>
        <f:facet name="header"></f:facet>
      <h:commandButton id="remove2"
                           value="Delete "
                           action="#{metier.remove2}">

<f:param name="loginn" value="#{item.login}"/>

           </h:commandButton>
     <h:messages />
    </h:column>
                    
                </h:dataTable>
            <h:messages style="color: red" globalOnly="true"/>
            </h:form>

        </h:form>

        

    </html>
    </f:view>



A tu une idée ?
Messages postés
6
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
28 septembre 2009

Est ce que la suppression s effectue dans la base de donnée ?? si c est oui alors j ai aussi le même problème , et je dois déployer à nouveau le serveur pour avoir la nouvelle table avec la ligne supprimée .
Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
23 septembre 2009

Quarter-Pounder with cheese
Après, tout se passe dans ton bean jsf.
Sur l'action remove, tu crée une méthode associé qui s'occupe de supprimer dans ta base, et de mettre ta liste de champ à jour. Cette méthode doit te renvoyer une String qui sera interprétée par ton fichier faces config (from: mastringrenvoyée; to: mapagededestinationquiaffichemapageajourquiestcertainementlamemequemapagesource). Le tour sera joué. J'ai pas d'exemple sous la main vu que je ne suis pas chez moi, mais le raisonnement y est...
Si tu veux plus de précisions, envoies moi un message demain^^.

Prochaine, charlie
Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
23 septembre 2009

j'oubliais, jamais de form imbriqués, ce n'est pas dans la spec servlet, donc pas dans la spec jsf... et surtout ça n'a pas à figurer dans ton exemple...
Quarter-Pounder with cheese
Messages postés
28
Date d'inscription
mardi 14 juillet 2009
Statut
Membre
Dernière intervention
4 février 2010

Bonjour ,

mais mon probléme c'est que pour moi , la suppression ne s'effectue meme pas dans la base de données .


Le code de la methode de suppression (remove) est :


public String remove()
       
{
     FacesContext context = FacesContext.getCurrentInstance();

Map map = context.getExternalContext().getRequestParameterMap();

 login = (String) map.get("loginn");

System.out.println(login);

  c=cf.find(login);
   cf.remove(c);

    return null;
}



Le system.out.println(login) affiche un ligin null .
Le probléme vient normalement de la ligne

Map map = context.getExternalContext().getRequestParameterMap();


mais , j'ai suivi un tutorial , normalement ca doit marcheer .

Merci bien .
Messages postés
28
Date d'inscription
mardi 14 juillet 2009
Statut
Membre
Dernière intervention
4 février 2010

Bonjour ,

tcharl
peut tu explique un peu plus cde que tu veut dire par :


"jamais de form imbriqués"

Merci bien .
Messages postés
5
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
23 septembre 2009

Re-

Tu n'as pas le droit de faire:
  <h:form id="create">
     <h:form>
...
</form>
</form>

Par contre, ceci est possible:
  <h:form id="create">
....
</form>
     <h:form>
...
</form>


Quarter-Pounder with cheese
Messages postés
28
Date d'inscription
mardi 14 juillet 2009
Statut
Membre
Dernière intervention
4 février 2010

Bonjour ,

j'ai supprimé les deux formes imbriquées et c'a bien marché . C'était vraiment le brobléme .

Merci beaucoup