Bonjour, Je suis débutant sur le Struts, j'ai trouver un tutoriel sympa, http://www.roseindia.net/struts/struts2/index.shtml
Il me permet de créer des projets struts en me guidant pas à pas, sauf que je bloc sur mon premier exemple (Hello World) et même en le comparant à la solution je n'arrive pas à régler le problème, le message d'erreur est le suivant :
En suivant le tutorial j'ai configurer mes fichier xml comme suitStruts Problem Report
Struts has detected an unhandled exception:
# Messages: There is no Action mapped for action name HelloWorld.
Stacktraces
There is no Action mapped for action name HelloWorld. - [unknown location]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
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:175)
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:844)
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(Unknown Source)
1 - struts. xml :
2- Web.xml :
Code XML : 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 <?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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="roseindia" namespace="/roseindia" extends="struts-default"> <action name="HelloWorld" class="net.roseindia.Struts2HelloWorld"> <result>/pages/HelloWorld.jsp</result> </action> <!-- Add actions here --> </package> <!-- Add packages here --> </struts>
et aussi build.xml :
Code XML : 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 <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" 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>Struts Blank</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </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>
Aussi pour :
Code XML : 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 <project name="Struts 2 Tutorial" basedir="../" default="all"> <!-- Project settings --> <property name="project.title" value="RoseIndia Struts 2 Tutorials"/> <property name="project.jar.file" value="struts2tutorial.jar"/> <path id="class.path"> <fileset dir="lib"> <include name="**/*.jar"/> </fileset> <fileset dir="libext"> <include name="**/*.jar"/> </fileset> </path> <!-- Classpath for Project --> <path id="compile.classpath"> <pathelement path ="lib/commons-beanutils.jar"/> <pathelement path ="lib/commons-digester.jar"/> <pathelement path ="lib/struts.jar"/> <pathelement path ="libext/servlet-api.jar"/> <pathelement path ="libext/catalina-ant.jar"/> <pathelement path ="classes"/> <pathelement path ="${classpath}"/> </path> <!-- Check timestamp on files --> <target name="prepare"> <tstamp/> <copy file="src/struts.xml" todir="src/classes"/> </target> <!-- Copy any resource or configuration files --> <target name="resources"> <copy todir="src/classes" includeEmptyDirs="no"> <fileset dir="src/java"> <patternset> <include name="**/*.conf"/> <include name="**/*.properties"/> <include name="**/*.xml"/> </patternset> </fileset> </copy> </target> <!-- Normal build of application --> <target name="compile" depends="prepare,resources"> <javac srcdir="src" destdir="src/classes" debug="true" debuglevel="lines,vars,source"> <classpath refid="class.path"/> </javac> <jar jarfile="lib/${project.jar.file}" basedir="src/classes"/> </target> <!-- Remove classes directory for clean build --> <target name="clean" description="Prepare for clean build"> <delete dir="classes"/> <mkdir dir="classes"/> </target> <!-- Build Javadoc documentation --> <target name="javadoc" description="Generate JavaDoc API docs"> <delete dir="./doc/api"/> <mkdir dir="./doc/api"/> <javadoc sourcepath="./src/java" destdir="./doc/api" classpath="${servlet.jar}:${jdbc20ext.jar}" packagenames="*" author="true" private="true" version="true" windowtitle="${project.title} API Documentation" doctitle="<h1>${project.title} Documentation (Version ${project.version})</h1>" bottom="Copyright © 2002"> <classpath refid="compile.classpath"/> </javadoc> </target> <!-- Build entire project --> <target name="project" depends="clean,prepare,compile"/> <!-- Create binary distribution --> <target name="dist" description="Create binary distribution"> <mkdir dir="${distpath.project}"/> <jar jarfile="${distpath.project}/${project.distname}.jar" basedir="./classes"/> <copy file="${distpath.project}/${project.distname}.jar" todir="${distpath.project}"/> <war basedir="../" warfile="${distpath.project}/${project.distname}.war" webxml="web.xml"> <exclude name="${distpath.project}/${project.distname}.war"/> </war> </target> <!-- Build project and create distribution--> <target name="all" depends="project"/> </project>
Struts2HelloWorld.java
et HelloWorld.jsp
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 package net.roseindia; import com.opensymphony.xwork2.ActionSupport; import java.util.Date; public class Struts2HelloWorld extends ActionSupport { public static final String MESSAGE = "Struts 2 Hello World Tutorial!"; public String execute() throws Exception { setMessage(MESSAGE); return SUCCESS; } private String message; public void setMessage(String message){ this.message = message; } public String getMessage() { return message; } public String getCurrentTime(){ return new Date().toString(); } }
Je tiens à préciser que la compilation s'est faite correctement avec l'outils "ant"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Struts 2 Hello World Application!</title> </head> <body> <h2><s:property value="message" /></h2> <p>Current date and time is: <b><s:property value="currentTime" /></b> </body> </html>
merci d'avance
Partager