sdx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-users] Ignorer un critère de recherche


From: Pierre Dittgen
Subject: [sdx-users] Ignorer un critère de recherche
Date: Wed, 26 Oct 2005 14:17:00 +0200
User-agent: Mozilla Thunderbird 1.0 (Windows/20041206)

Bonjour,

Je me suis posé un problème dernièrement avec SDX et j'ai trouvé une solution de contournement, cependant je serai bien intéressé de savoir s'il existe une solution plus "propre".

J'ai un formulaire de recherche contenant deux critères, appelons les couleur et forme. Au départ dans mon formulaire de recherche j'avais qqchose comme :
<select name="couleur">
<option value="">-- Choisissez une couleur --</option>
<option>rouge</option>
<option>vert</option>
<option>bleu</option>
</select>
et
<select name="forme">
<option value="">-- Choisissez une forme --</option>
<option>carré</option>
<option>triangle</option>
<option>rectangle</option>
</select>

et une XSP de traitement contenant :
<executeComplexQuery complexop="and">
   <linearQuery field="couleur" valueParam="couleur"/>
   <linearQuery field="forme" valueParam="forme"/>    
</executeComplexQuery>

Le problème est le suivant :
Si je sélectionne une couleur et pas de forme, je n'obtiens aucun résultat, même chose si je choisis une forme et pas de couleur. Le problème vient du fait que ne pas sélectionner une valeur dans une combo revient à sélectionner une valeur vide "" qui est prise en compte dans la recherche. Pour résoudre mon problème, j'ai essayé de faire un pré-traitement de mes paramètres avec de lancer la requete, qqchose comme :

<xsp:logic>
    String[] maCouleur = request.getParameterValues("couleur");
    if (maCouleur != null &amp;&amp; "".equals(maCouleur[0])) {
        maCouleur = new String[0];
    }
    String[] maForme = request.getParameterValues("forme");
    if (maForme != null &amp;&amp; "".equals(maForme[0])) {
        maForme = new String[0];
    }
</xsp:logic>
<executeComplexQuery complexop="and">
   <linearQuery field="couleur" valueString="maCouleur"/>
   <linearQuery field="forme" valueString="maForme"/> 
</executeComplexQuery>

mais ça ne marche pas mieux :-(

Finalement, j'ai opté pour des checkboxes mais j'aimerai bien savoir s'il y a moyen programmatiquement d'indiquer à SDX de ne pas prendre en compte un critère (valeur neutre) dans une requete complexe.

Merci d'avance
Pierre
--
Pierre Dittgen
Tél/Fax 01 49 60 10 23
PASS Technologie http://www.pass-tech.fr
23, rue Pierre et Marie Curie / 94200 Ivry sur Seine





reply via email to

[Prev in Thread] Current Thread [Next in Thread]