[Débutant][STRUTS] select dépendant d'un autre select
2 réponses
DiVa
Bonjour,
Je suis à la recherche d'un exemple STRUTS concret de formulaire à
l'intérieur duquel les options d'une balise
[CODE]
<html:select>
[/CODE]
dépendent du choix effectué dans une autre balise select dont voici le
code :
[CODE]
<html:select property="siteGeographique" style="width: 200px;" >
<html:option value="">Indiquez votre site...</html:option>
<html:optionsCollection property="listeSitesGeographiques"
value="value" label="label" />
</html:select>
[/CODE]
Qui est alimentée par une classe Action :
[CODE]
public class InitAssuranceForm extends Action
{
/**
* This is the main action called from the Struts framework.
* @param mapping The ActionMapping used to select this instance.
* @param form The optional ActionForm bean for this request.
* @param request The HTTP Request we are processing.
* @param response The HTTP Response we are processing.
* @throws javax.servlet.ServletException
* @throws java.io.IOException
* @return
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
IOException, ServletException {
AssurerActionForm aaf = (AssurerActionForm) form ;
ArrayList tmp = ((ArrayList) AuthCtl.rechercherSitesGeographiques());
ArrayList liste = new ArrayList() ;
Iterator it = tmp.iterator() ;
while (it.hasNext())
{
SiteGeographiqueVO s = (SiteGeographiqueVO) it.next() ;
liste.add(new LabelValueBean(s.getLibelleSite(),
s.getIdentifiantSite())) ;
}
aaf.setListeSitesGeographiques(liste);
return mapping.findForward("afficherAssuranceForm");
}
}
[/CODE]
Merci pour votre aide.
--
''~``
( o o )
+------------------.oooO--(_)--Oooo.------------------+
| |
| Retirer nospam pour m'ecrire |
| |
| .oooO |
| ( ) Oooo. |
+---------------------\ (----( )--------------------+
\_) ) /
(_/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Zuckerman
Bonsoir,
Je suis à la recherche d'un exemple STRUTS concret de formulaire à l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) / ActiveXObject("Microsoft.XMLHTTP") (IE 5.x et plus) : c'est un objet Javascript qui permet d'effectuer des requêtes vers une source externe... Exemple très très rapide :
/*--------8<----------------------------*/ var isIE = false; function getHttpObject() { var req; if (window.XMLHttpRequest) // Safari / Gecko req = new XMLHttpRequest(); else if (window.ActiveXObject) {// IE req = new ActiveXObject("Microsoft.XMLHTTP"); isIE = true; } else req = null; return req; }
function doSelect() { var request = getHttpObject(); if (!request) { alert("votre navigateur n'est pas assez récent"); return; }
request.onreadystatechange = processRequest;
var monSelect document.getElementById('monSelect'); var selection = monSelect.selectedIndex; var value = monSelect.options[selection].value;
function processRequest() { if (request.readyState == 4) { // fin de la transaction if (request.status == 200) { // "OK" empty(document.getElementById('dstSelect')); fill(document.getElementById('dstSelect')); } else { // erreur // gestion des erreurs } } }
function empty(select) { while(select.length > 0) select.remove(0); }
function fill(select) { // Traitement : // regarder soit le traitement via DOM (request.responseXML), // soit en utilisant le champ request.responseText }
/*--------------------------->8---------*/
Donc en gros, c'est surtout du javascript qu'il faut faire.
Côté serveur, il te faut juste un JSP qui utilise les tags de logic : <%@ taglib uri="..." prefix="logic"%> <logic:present name="resultat"> ${resultat}</logic:present>
Et aussi, il te faut une action pour remplir l'objet XMLHttpRequest :
public final class MonAction extends Action { public ActionForward execute(...) { String value = request.getParameter("value"); String forwardTo = ""; if (value == null) { // traitement d'erreur ... // [...] forwardTo = "ko"; } else { // traitement en fonction de ta valeur ... // [...] request.setAttribute("resultat", tonObjetResultat); forwardTo = "ok"; } return mapping.findForward(forwardTo); } }
Bon courage,
Stéphane
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Bonsoir,
Je suis à la recherche d'un exemple STRUTS concret de formulaire à
l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) /
ActiveXObject("Microsoft.XMLHTTP") (IE 5.x et plus) : c'est un objet
Javascript qui permet d'effectuer des requêtes vers une source externe...
Exemple très très rapide :
/*--------8<----------------------------*/
var isIE = false;
function getHttpObject() {
var req;
if (window.XMLHttpRequest) // Safari / Gecko
req = new XMLHttpRequest();
else if (window.ActiveXObject) {// IE
req = new ActiveXObject("Microsoft.XMLHTTP");
isIE = true;
} else req = null;
return req;
}
function doSelect() {
var request = getHttpObject();
if (!request) {
alert("votre navigateur n'est pas assez récent");
return;
}
request.onreadystatechange = processRequest;
var monSelect document.getElementById('monSelect');
var selection = monSelect.selectedIndex;
var value = monSelect.options[selection].value;
function processRequest() {
if (request.readyState == 4) { // fin de la transaction
if (request.status == 200) { // "OK"
empty(document.getElementById('dstSelect'));
fill(document.getElementById('dstSelect'));
} else { // erreur
// gestion des erreurs
}
}
}
function empty(select) {
while(select.length > 0) select.remove(0);
}
function fill(select) {
// Traitement :
// regarder soit le traitement via DOM (request.responseXML),
// soit en utilisant le champ request.responseText
}
/*--------------------------->8---------*/
Donc en gros, c'est surtout du javascript qu'il faut faire.
Côté serveur, il te faut juste un JSP qui utilise les tags de logic :
<%@ taglib uri="..." prefix="logic"%>
<logic:present name="resultat"> ${resultat}</logic:present>
Et aussi, il te faut une action pour remplir l'objet XMLHttpRequest :
public final class MonAction extends Action {
public ActionForward execute(...) {
String value = request.getParameter("value");
String forwardTo = "";
if (value == null) {
// traitement d'erreur ...
// [...]
forwardTo = "ko";
} else {
// traitement en fonction de ta valeur ...
// [...]
request.setAttribute("resultat",
tonObjetResultat);
forwardTo = "ok";
}
return mapping.findForward(forwardTo);
}
}
Bon courage,
Stéphane
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)
Je suis à la recherche d'un exemple STRUTS concret de formulaire à l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) / ActiveXObject("Microsoft.XMLHTTP") (IE 5.x et plus) : c'est un objet Javascript qui permet d'effectuer des requêtes vers une source externe... Exemple très très rapide :
/*--------8<----------------------------*/ var isIE = false; function getHttpObject() { var req; if (window.XMLHttpRequest) // Safari / Gecko req = new XMLHttpRequest(); else if (window.ActiveXObject) {// IE req = new ActiveXObject("Microsoft.XMLHTTP"); isIE = true; } else req = null; return req; }
function doSelect() { var request = getHttpObject(); if (!request) { alert("votre navigateur n'est pas assez récent"); return; }
request.onreadystatechange = processRequest;
var monSelect document.getElementById('monSelect'); var selection = monSelect.selectedIndex; var value = monSelect.options[selection].value;
function processRequest() { if (request.readyState == 4) { // fin de la transaction if (request.status == 200) { // "OK" empty(document.getElementById('dstSelect')); fill(document.getElementById('dstSelect')); } else { // erreur // gestion des erreurs } } }
function empty(select) { while(select.length > 0) select.remove(0); }
function fill(select) { // Traitement : // regarder soit le traitement via DOM (request.responseXML), // soit en utilisant le champ request.responseText }
/*--------------------------->8---------*/
Donc en gros, c'est surtout du javascript qu'il faut faire.
Côté serveur, il te faut juste un JSP qui utilise les tags de logic : <%@ taglib uri="..." prefix="logic"%> <logic:present name="resultat"> ${resultat}</logic:present>
Et aussi, il te faut une action pour remplir l'objet XMLHttpRequest :
public final class MonAction extends Action { public ActionForward execute(...) { String value = request.getParameter("value"); String forwardTo = ""; if (value == null) { // traitement d'erreur ... // [...] forwardTo = "ko"; } else { // traitement en fonction de ta valeur ... // [...] request.setAttribute("resultat", tonObjetResultat); forwardTo = "ok"; } return mapping.findForward(forwardTo); } }
Bon courage,
Stéphane
-- "Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce que je veux !" "The obvious mathematical breakthrough would be development of an easy way to factor large prime numbers." (Bill Gates, The Road Ahead)
Lionel
Stephane Zuckerman wrote:
Bonsoir,
Je suis à la recherche d'un exemple STRUTS concret de formulaire à l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) /
2e possibilité, peut etre plus simple: utiliser la librairie struts-layout.
3e possibilité: tout coder en javascript. techniquement très facile, mais pas très beau... Suffit de faire 2 tableaux JS, et de repeupler le 2e menu en fonction de l'élément sélectionné dans le 1er.
4e possibilité: moyenne pour l'utilisateur (rechargement de page), mais la plus simple/rapide à coder: sur le onchange du 1er menu, faire un submit du form qui refresh le contenu du 2e menu
Personellement je trouve que la solution proposée par Stephane est la plus élégante.
Stephane Zuckerman wrote:
Bonsoir,
Je suis à la recherche d'un exemple STRUTS concret de formulaire à
l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) /
2e possibilité, peut etre plus simple: utiliser la librairie struts-layout.
3e possibilité: tout coder en javascript.
techniquement très facile, mais pas très beau...
Suffit de faire 2 tableaux JS, et de repeupler le 2e menu en fonction de
l'élément sélectionné dans le 1er.
4e possibilité: moyenne pour l'utilisateur (rechargement de page), mais la
plus simple/rapide à coder:
sur le onchange du 1er menu, faire un submit du form qui refresh le contenu
du 2e menu
Personellement je trouve que la solution proposée par Stephane est la plus
élégante.
Je suis à la recherche d'un exemple STRUTS concret de formulaire à l'intérieur duquel les options d'une balise
Regarde du côté de XMLHttpRequest (Safari/Firefox) /
2e possibilité, peut etre plus simple: utiliser la librairie struts-layout.
3e possibilité: tout coder en javascript. techniquement très facile, mais pas très beau... Suffit de faire 2 tableaux JS, et de repeupler le 2e menu en fonction de l'élément sélectionné dans le 1er.
4e possibilité: moyenne pour l'utilisateur (rechargement de page), mais la plus simple/rapide à coder: sur le onchange du 1er menu, faire un submit du form qui refresh le contenu du 2e menu
Personellement je trouve que la solution proposée par Stephane est la plus élégante.