Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/12/2010, 00h37   #1
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
Par défaut Passage de la valeur grid.selection.getSelected() a une fonction java au niveau servlet

bonsoir le monde , je debute dans dojo ,et j'ai besoin d'une aide .
en effet,j'ai crée un formulaire a remplir,les champs insérés alimentent une base de donnée mysql ,et aussi un tableau(grid),ce tableau contient 2 bouttons ajouter(pour invoquer le formulaire) et supprimer .
jusque la tout va bien : le tableau est bien alimenté par les objets ajoutés ,quand je selectionne un objet dans la grid et que je le supprime,ca marche ,mais seulement au niveau de la grid ,pas dans la BD . je ne sais pas comment je vais proceder pour supprimer l'objet de la base de donnée (passer la valeur du champs selectionnée a la fonction de suppression) .
concretement :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
       function deletegrid()
{    var items = grid.selection.getSelected();
    if(items.length){
        dojo.forEach(items, function(select) {
            if(select !== null) {
                store.deleteItem(select);
     dojo.xhrGet({
// l'url de la servlet qui sera l'intermediaire entre dojo et le traitement niveau ejb        
url: 'DelFromDatabase',
        load: donneeSup,
        error: donneePasSup,
       content: items
    });
            }})
}}

niveau servlet
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
@WebServlet(name = "Sup", urlPatterns = {"/DelFromDatabase"})
public class Sup extends HttpServlet {
    @EJB
//le type GestionnaireDeContacts  fait reference a mon EJB session (la ou je definis les fct getOne et suprimer)
    private GestionnaireDeContacts gestionnaireDeContacts;
 
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
 
 //ici je lui passe comme parametre l'id num 1 ,normalement je dois lui fournir la valeur associé a la casé selectionné dans la grid (grid.selection.getSelected())!!
Contact c=gestionnaireDeContacts.getOne(1);
    gestionnaireDeContacts.suprimer(c);
merci d'avance pour votre aide
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 09h59   #2
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
Bonjour,

Ton code me semble correct, tout comme ton raisonnement. Je ne vois pas ou est le soucis. Si c'est au niveau de la valeur a envoyer au servlet, je pense que la clé primaire est suffisante plutôt que "items".
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 22h02   #3
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
normalement il faut inserer a la place de 1 ,la clé primaire de la case selectionné dans la grid
Code :
Contact c=gestionnaireDeContacts.getOne(1);
voici la fonction getOne et suprimer
Code :
1
2
3
4
5
6
7
8
9
10
public void suprimer(Contact art)
        {
 Contact person = em.merge(art);
	em.remove(person);
	}
 
 
    public Contact getOne(int id){
    return em.find(Contact.class,id);
    }
j'arrive toujours pas a imaginer comment dojo communiquera cette valeur de ID a ma fonction getOne !
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 14h17   #4
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
Ce n'est pas dojo qui doit identifier la valeur de ton ID
Tu dois lui envoyer toi même la valeur que tu as dans ta ligne sélectionnée.

Code :
1
2
3
4
5
if(select !== null) {
        monID = monGrid.store.getValue(select, "id");
        store.deleteItem(select);
...
Cette commande te permet de récupérer la valeur de la cellule ("id") dans ta ligne sélectionnée. C'est cette valeur que tu dois envoyer.

Ensuite via le xhrGet, tu envoies la valeur au servlet. Je ne connais pas Java du coup je ne peux pas te dire quelle commande il faut utiliser pour récupérer les GET ou les POST des pages html. Par contre, je te conseille plutôt le xhrPost c'est plus discret qu'un get.
Par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var xhrArgs = {
	url:"DelFromDatabase",
	postData: "ID="+monID,
	handleAs: "text",
	error: function(error) {
		//W
	        alert(error);
	}
}
//Call the asynchronous xhrPost
var deferred = dojo.xhrPost(xhrArgs);
deferred.addCallback(function(data) {
         //permet de traiter la valeur de retour
         donneeSup;
         //ou
         donneePasSup;
}
J'espere que ce sera assez clair
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2010, 14h29   #5
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
merci encore pour votre reponse ,j'irais voir ce que ca donne
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2010, 21h05   #6
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
j'etais occupé avec des trucs ,c pour cela que jai tardé a repondre
ca marche trés bien ,merci pour votre aide
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h13.


 
 
 
 
Partenaires

Hébergement Web