Bonjour à tous,
J'ai découvert un peut par hasard le pluging jquery pour struts 2, hélas l'apprentissage n'est pas facile car je ne trouve pas grande informations sur le net.
Le but étant de faire un autocompleter lié à un autre autocompleter, l'un dépendant de l'autre et je galère.
Voici le début de mon étude avec un cas pratique:
les libs utilisé sans dans le fichier ci-joint.
Mon fichier JSP -
l'action:
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sj" uri="/struts-jquery-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <sj:head jqueryui="true" /> <script> $.subscribe("/autoZoneChange",function(event, data){ alert('HI'); },null); </script> <title>Les zones</title> </head> <body> <s:url id="url_zones" action="selectZone" /> <sj:autocompleter id="auto_zone" name="manager" href="%{url_zones}" loadMinimumCount="1" delay="10" onCompleteTopics="/autoZoneChange"/> <sj:autocompleter id="autocomplete_zone" name="name_zone" href="%{url_zones}" label="World Zones" list="zones" listKey="key" listValue="value" delay="30" loadMinimumCount="2" onSelectTopics="/autoZoneChange" /> </body> </html>
BDDZones et une classe qui rend une liste...
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 package com.linking.autocompleter.action; import java.util.ArrayList; import java.util.List; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import com.opensymphony.xwork2.ActionSupport; @ParentPackage("jsonPackage") public class ManagerZones extends ActionSupport{ /** * The serialVersionUID */ private static final long serialVersionUID = -1399793188774054159L; /** */ List<String> zones = new ArrayList<String>(); /** */ private String [] zonesNames; //Getters and Setters public String [] getZonesNames() { return zonesNames; } public List<String> getZones() { return zones; } @Override @Action(value="/selectZone", results={ @Result(name="success", type="json", params = {"zonesParam", "zonesNames"}), @Result(name="input", location="jsp/empty.jsp") }) public String execute() throws Exception { System.out.println("Classe: ManagerZones - Méthode: execute"); zones = BDDZones.getListZone(); zonesNames =zones.toArray(new String[zones.size()]); return SUCCESS; } }
struts.xml
Je parviens bien à me connecter sur l'action, là pas de problème, je passe bien par la méthode execute.
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 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="false" /> <package name="jsonPackage" namespace="/" extends="json-default"> <result-types> <result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/> </result-types> <action name="ManagersAutoCompleter1" method = "execute" class="com.wellmanage.trading.eieio.actions.ManagersAutoCompleter1"> <result type="json" name="success"> <param name="root">managerNames</param> </result> </action> <action name="ManagersAutoCompleter" class="com.wellmanage.trading.eieio.actions.ManagersAutoCompleter1"> <result type="json" name="success"> <param name="admin">employeNames</param> </result> </action> <action name="selectZone" class="com.linking.autocompleter.action.ManagerZones"> <result name="success" type="json"> <param name="zonesParam">zonesNames</param> </result> <result name="input">/jsp/empty</result> </action> </package> </struts>
le script:lui n'est pas déclenché.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <script> $.subscribe("/autoZoneChange",function(event, data){ alert('HI'); },null); </script>
Est dans les input de la jsp aucun choix n'est proposé.
Donc, je vous remercie d'avance si vous pouvez me conseiller un bon tuto pour démarrer avec jquery-struts2 voir même un bon livre et pour finir m'apporter de l'aide avec cet exemple.
Merci
Partager