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 2 Java Discussion :

[Struts 2.1.6] Pb sur Annotated HelloWorld


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 97
    Par défaut [Struts 2.1.6] Pb sur Annotated HelloWorld
    Bonjour,

    J'essaye de faire un exemple très simple AnnotatedHelloWorld du livre Struts 2 in Action avec Struts 2.1.6. (l'exemple sans annotations fonctionne très bien)

    Arborescence de mon projet :



    AnnotatedNameCollector.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Result(name = "SUCCESS" , location="/chapterTwo/NameCollector.jsp" )
    public class AnnotatedNameCollector extends ActionSupport {
    }
    HelloWorldAction.java
    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
     
    import org.apache.struts2.convention.annotation.Result;
     
    import com.opensymphony.xwork2.Action;
     
    @Result(name="SUCCESS",location ="/chapterTwo/HelloWorld.jsp")
    public class HelloWorldAction{
     
    	private String name;
    	private String message;
     
    	public String execute ()
    	{
    		setMessage("Hello"+ name);
     
    		return "SUCCESS";
    	}
     
    	public String getName() {
    		return name;
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	public String getMessage() {
    		return message;
    	}
     
    	public void setMessage(String message) {
    		this.message = message;
    	}	
    }
    Voici mon web.xml:

    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
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     
     
    	<display-name>S2 Exemple Application - Chapter 1</display-name>
     
     
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
            <init-param>
         			<param-name>actionPackages</param-name>
        			<param-value>actions</param-value>
      		</init-param>  
        </filter>
     
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    	</welcome-file-list>
     
    </web-app>
    struts.xml :
    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
     
    <?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.devMode" value="true" />
     
    	<package name="default" namespace="/" extends="struts-default">
    		<action name="Menu">
    			<result>/menu/Menu.jsp</result>
    		</action>
    	</package>
     
    </struts>
    Grâce au filter présent dans mon web.xml ceci devrait fonctionner :
    http://localhost:8080/ProjStruts2/an...llector.action

    mais j'obtiens :

    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
     
     Struts has detected an unhandled exception:
    # Messages: 	There is no Action mapped for namespace / and action name annotatedNameCollector.
    Stacktraces
    There is no Action mapped for namespace / and action name annotatedNameCollector. - [unknown location]
     
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
        org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
        org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        java.lang.Thread.run(Thread.java:619)

    Avez-vous une idée ?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 25
    Par défaut
    Salut,
    tes classes Action sont dans quel package?
    Elles doivent se trouver dans le package actions.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 97
    Par défaut
    Mes classes sont dans le package "actions".

    ++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 92
    Par défaut
    dans ta classe :
    public class HelloWorldAction{
    .../...
    }


    il te manque le extends ActionSupport

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2005
    Messages : 97
    Par défaut
    Bonjour,

    Selon le livre Struts 2 in Action il y a trois possibilités pour que le framework Struts 2 reconnaisse les actions :

    implements Action
    ou
    extends ActionSupport
    ou
    il faut avoir Action à la fin du nom de la classe.

    Bon de toute manière j'avais essayé aussi avec "implements Action".

    Merci quand même.

  6. #6
    Membre chevronné Avatar de ruscov
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2007
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2007
    Messages : 347
    Par défaut
    Dans ton struts.xml, je ne vois pas de annotatedNameCollector, il y a juste une action Menu...

Discussions similaires

  1. [Struts-Layout] besoin d'explications sur le tri
    Par pitit777 dans le forum Struts 1
    Réponses: 8
    Dernier message: 21/09/2007, 16h05
  2. Réponses: 5
    Dernier message: 10/05/2007, 19h04
  3. [Struts]logic:iterate - une ligne sur deux en couleur
    Par jeb001 dans le forum Struts 1
    Réponses: 24
    Dernier message: 17/10/2005, 15h07
  4. Réponses: 6
    Dernier message: 10/08/2005, 17h28
  5. [Struts]Affiche d'une liste sur plusieurs pages
    Par guillaume_85 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/06/2005, 20h23

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