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