IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Erreur avec LookUpDispatchAction


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut Erreur avec LookUpDispatchAction
    Bonjour,

    J'ai l'erreur suivante quand j'éxecute une page où j'ai deux boutons Submit vers la même LookUpDispatchAction:
    javax.servlet.ServletException: Request[/refreshComm] does not contain handler parameter named submit
    J'ai pourtant suivi la FAQ sur Struts à ce sujet (cf: ici) et consulté le précédent topic relatant ce sujet (ici )

    Donc oivic ce que j'ai fait:
    Dans mon struts-config.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <action 
                path  = "/refreshComm"
                name  = "commFilterForm"
                scope = "session"
                type  = "com.thalys.localys.web.action.message.RefreshCommAction"
                parameter = "submit">
                <forward name="success" path="message.communications" />
            </action>
    Code de RefreshCommAction
    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
    package ...;
     
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.LookupDispatchAction;
     
    ...
     
     
    public class RefreshCommAction extends LookupDispatchAction {
     
        public ActionForward filter(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
     
            Logger.getInstance().debug(this,"method filter");
     
     
            return mapping.findForward(Forwards.SUCCESS);
        }
     
        public ActionForward allToday(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
            Logger.getInstance().debug(this,"method AllToday");
     
     
            return mapping.findForward(Forwards.SUCCESS);
        }
     
     
        protected Map getKeyMethodMap() {
            Map map = new HashMap();
            map.put("common.filter.submit.all", "allToday");
            map.put("common.filter.submit", "filter");
            return map;
        }
     
    }
    Vous noterez la présence de getKeyMethodMap():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     protected Map getKeyMethodMap() {
            Map map = new HashMap();
            map.put("common.filter.submit.all", "allToday");
            map.put("common.filter.submit", "filter");
            return map;
        }
    Clés dans le ressource.bundle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    common.filter.submit.all=Tout
    common.filter.submit=Filtrer
    Et le code concerné dans la JSP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div class="submit">
    				<html:submit property="submit">
    					<bean:message key='common.filter.submit.all' />
    				</html:submit>
    				&nbsp;
    				<html:submit property="submit">
    					<bean:message key='common.filter.submit'/>
    				</html:submit>				
    			</div>
    Voilà. La raison pour laquelle je n'utilise pas de JavaScript est par souci d'accessibilité (si un de mes utilisateurs le désactive...).

    Merci d'avance

    Nicolas

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    ton code est bien placé dans une form ?

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Oui oui.

    Cijoint tout mon code JSP (après tout, on sait pas...)

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <%@ page language="java" %>
    <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
    <%@ taglib uri="/tags/struts-html" prefix="html" %>
    <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
    <%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
    
    <%@page import="com.thalys.localys.web.tools.Constants"%>
    <script type="text/javascript">
    <!--
    	var _LABEL_ADD        = "<bean:message key='common.filter.buttons.add' />";
    	var _LABEL_ADDALL     = "<bean:message key='common.filter.buttons.addall' />";
    	var _LABEL_REMOVE     = "<bean:message key='common.filter.buttons.remove' />";
    	var _LABEL_REMOVEALL  = "<bean:message key='common.filter.buttons.removeall' />";
    -->
    </script>
    
    <html:form action="/refreshComm" styleId="filterForm">
    	<div class="formcontainer">
    		<h4><span><bean:message key='common.filter'/></span></h4>
    		<div class="collapsable">
    			<html:hidden property='sortOn'/>
    			<html:hidden property='sortDir'/>
    			<fieldset id="requests">
    				<legend><bean:message key='comm.filter.requests' /></legend>
    				<html:select property='selectedRequests' multiple='true' size='6' styleClass="multipleSelect">
    					<html:options property='possibleRequests' />
    				</html:select>
    			</fieldset>
    			<fieldset id="responses">
    				<legend><bean:message key='comm.filter.responses' /></legend>
    				<html:select property='selectedResponses' multiple='true' size='6' styleClass="multipleSelect">
    					<html:options property='possibleResponses' />
    				</html:select>
    			</fieldset>
    			<fieldset id="rames">
    				<legend><bean:message key='comm.filter.rames' /></legend>
    				<html:select property='selectedRames' multiple='true' size='6' styleClass="multipleSelect">
    					<html:options property='possibleRames' />
    				</html:select>
    			</fieldset>
    			<fieldset id="period">
    			<legend><bean:message key='comm.filter.period' /></legend>
    				<label for="startDaySelect"><bean:message key="comm.filter.fromdate" />&nbsp;:</label>
    				<html:select property="startDay" styleId="startDaySelect">
    					<html:options property="possibleDays" />
    				</html:select>
    				<html:select property="startMonth">
    					<html:options property="possibleMonths" />
    				</html:select>
    				<html:select property="startYear">
    					<html:options property="possibleYears" />
    				</html:select>
    				<html:select property="startHour">
    					<html:options property="possibleHours" labelProperty="possibleHoursLabels" />
    				</html:select><br />
    				<label for="stopDaySelect"><bean:message key="comm.filter.todate" />&nbsp;:</label>
    				<html:select property="stopDay" styleId="stopDaySelect">
    					<html:options property="possibleDays" />
    				</html:select>
    				<html:select property="stopMonth">
    					<html:options property="possibleMonths" />
    				</html:select>
    				<html:select property="stopYear">
    					<html:options property="possibleYears" />
    				</html:select>
    				<html:select property="stopHour">
    					<html:options property="possibleHours" labelProperty="possibleHoursLabels" />
    				</html:select>
    			</fieldset>
    			<div class="submit">
    				<html:submit property="submit">
    					<bean:message key='common.filter.submit.all' />
    				</html:submit>
    				&nbsp;
    				<html:submit property="submit">
    					<bean:message key='common.filter.submit'/>
    				</html:submit>				
    			</div>
    		</div>
    	</div>
    </html:form>

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Le fichier des messages est bien sous WEB-INF/classes ?

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    ton name name = "commFilterForm" est douteux à première vue (seconde vivi)

    (ca fait 4 ans que j utilise plus struts ca me fait pas de mal lol)

    et la déclaration du formbean est elle correcte ?

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Citation Envoyé par c_nvy
    Le fichier des messages est bien sous WEB-INF/classes ?
    Non il est sous WEB-INF/resources. Mais les messages s'affichent sans problème et cet affichage a toujours marché jusqu'à maintenant

    ton name name = "commFilterForm" est douteux à première vue (seconde vivi)

    (ca fait 4 ans que j utilise plus struts ca me fait pas de mal lol)

    et la déclaration du formbean est elle correcte ?
    Le name dans le tag action de struts-config réfère un ActionForm plus haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form-bean
    			type="com.thalys.localys.web.form.message.CommFilterForm"
    			name="commFilterForm" />
    Pour information, le process marchait très bien (càd la CommFilterForm (ActionForm), le RefreshCommAction (Action)) avant que je décide de rajouter une deuxième action possible et que donc je change l'action en une LookUpDispatchAction...

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par nicdo77
    Non il est sous WEB-INF/resources.
    S'il est sous WEB-INF/resources, il est donc automatiquement copié sous WEB-INF/classes/resources.
    Donc, pas de problème de ce côté-là.

    Tu as l'erreur avant l'affichage de la jsp ou lorsque tu cliques sur un des deux boutons ?

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Citation Envoyé par c_nvy
    S'il est sous WEB-INF/resources, il est donc automatiquement copié sous WEB-INF/classes/resources.
    Donc, pas de problème de ce côté-là.

    Tu as l'erreur avant l'affichage de la jsp ou lorsque tu cliques sur un des deux boutons ?
    Désolé de distiller mes infos au compte-gouttes.
    L'erreur arrive au moment où je veux afficher la JSP elle-même...

    (Merci pour l'aide hein)

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Citation Envoyé par c_nvy
    S'il est sous WEB-INF/resources, il est donc automatiquement copié sous WEB-INF/classes/resources.
    Donc, pas de problème de ce côté-là.
    Euh juste pr ma culture gé, ceci ne dépend que de mon ant, non? Enfin c'est pas fait automatiquement à la création du war!?

  10. #10
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par nicdo77
    L'erreur arrive au moment où je veux afficher la JSP elle-même...
    Tu es certain de ne pas appeler quelque part l'Action de path /refreshComm sans paramètre submit ?

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Citation Envoyé par c_nvy
    Tu es certain de ne pas appeler quelque part l'Action de path /refreshComm sans paramètre submit ?
    Mmh en fait je crois savoir d'où vient mon pb.
    J'avais pris en compte le paramètre submit dans la page elle-même (càd le clic sur les boutons).
    Mais pas lorsque on appelle la page (le lien vers la page est:
    https://localhost/LocalysWeb/refreshComm.do)
    Je suppose que ca vient de çà.

    Mais passer le paramètre dans la requete, çà va marcher?

  12. #12
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Oui ca vient exactement de ca!!Ton lien devrait etre de la forme :

    https://localhost/LocalysWeb/refresh...bmit=tonaction

    Ou bien sinon si tu veux que ton lien marche sans le parametre submit il faut que tu redefinisse la méthode unspecified du lookupdispatchaction

  13. #13
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Le problème vient bien de là.
    Il faut que tu passes le paramètre submit lors de l'appel de ta page via le link.
    Par contre, il faut peut-être créer une nouvelle méthode dans la LookupDispatchAction qui fait un simple forward car je suppose qu'à l'appel de la jsp, tu ne veux ni exécuter la méthode filter ni la méthode allToday ?

    EDIT : où la méthode unspecified comme te l'indique maxf1.

  14. #14
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Citation Envoyé par maxf1
    Oui ca vient exactement de ca!!Ton lien devrait etre de la forme :

    https://localhost/LocalysWeb/refresh...bmit=tonaction

    Ou bien sinon si tu veux que ton lien marche sans le parametre submit il faut que tu redefinisse la méthode unspecified du lookupdispatchaction
    D'accord. Et je forwarde vers quoi alors?
    Parce que la methode unspecified doit renvoyer un ActionForward. Mais qd je clique sur le lien, sans paramètre, je veux que ma page s'affiche... Dc je veux forwarder vers le traitement "de base" de /refreshComm...
    (Bon je débute dans Struts, hein)

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Ce que j'appelle "méthode de base", c'est en fait "filter"...
    (Oui forcément si je donne les infos tardivement...)

  16. #16
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Ben, il faut faire un forward vers la jsp dans laquelle tu as les deux boutons submit.

  17. #17
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    si tu as une methode "de base" pour refresh.... alors tu fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return filter(mapping, form, ........).

    Si non tu fais un forward vers ta page d'input (défini dans struts-config) je suppose s'il n'y a rien de spécial à faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return mapping.getInputForward();

  18. #18
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Ma question est bête.
    Les autres méthodes (filter et allToday) renvoient aussi des ActionForward, je n'ai qu'à les utiliser directement... (Mon dieu, je suis bête)
    Bon je vous tiens au coruant!

  19. #19
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    En fait j'ai toujours le pb. Qd j'arrive à accéder à la page (en mettant /refreshComm?submit=filter par exemple), ensuite, à la validation du formulaire de la page en question, çà plante.
    Il se trouve que quand le JavaScript est activé, il y a un listener sur le onSubmit, et du coup l'information du bouton sur lequel on a cliqué pour valider le formulaire est perdue... et je me retrouve avec la meme erreur de contexte (javax.servlet.ServletException: Request[/refreshComm] does not contain handler parameter named action)... Par contre, si le javascript est désactivé, çà marche...
    Moi, ce que je veux, c'est que çà marche dans les deux cas.

    Le code de mes JS (en utilisant des librairies Yahoo):
    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
     
    function submitForm(e){
        YAHOO.util.Event.preventDefault(e);
        var form    = YAHOO.util.Dom.get(_FILTER_FORM);
        var selects = YAHOO.util.Dom.getElementsBy(function(el){
            return YAHOO.util.Dom.hasClass(el.parentNode,"original")},
            "select", form);
        for (var i=0; i<selects.length; i++){
            handleSelect(selects[i]);
        }	
        form.submit();
    }
     
    function handleSelect(p_eSelect){
        var options = p_eSelect.childNodes;
        var fieldset = findFieldsetFromChild(p_eSelect);
        copy = YAHOO.util.Dom.getElementsBy(function(el){
            return YAHOO.util.Dom.hasClass(el.parentNode,"copy")},
            "select", fieldset)[0];
        for (var i=0; i<options.length; i++){
        	if (selectContains(copy,options[i]))
                options[i].selected = true;
            else if (options[i].selected)
                options[i].selected=false;
        }
        copy.name="";
    }
    Ah et sinon, rajouter unspecified() çà ne marche pas. Qd j'essaie de lancer ma page via /refreshComm, sans aucun paramètre 'submit', il me dit qu'il manque le handler (et pourtant unspecified a été écrite)

  20. #20
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Essaie en affectant une valeur au parametre submit dans la fonction javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.commFilterForm.submit.value="filter";

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 08h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 16h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 16h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 22h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 01h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo