Bonjour

j'ai un probleme dans un formulaire,le but est que lorsque j'invoque ma page j'obtient un combo de selection avec comme contenu un resultat d'une selection d'une base de donnée
voici mon strut-config.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
30
31
32
33
34
35
36
37
38
39
   <form-beans>
        <form-bean name="afficherInfo" type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="selectclient" type="java.lang.String"/>
        </form-bean>
    </form-beans>
    <data-sources>
        <data-source key="metal" type="org.apache.commons.dbcp.BasicDataSource">
            <set-property property="driverClass" value="com.mysql.jdbc.Driver"></set-property>
            <set-property property="url" value="jdbc:mysql://localhost:3306/metal"></set-property>
            <set-property property="username" value="root" />
            <set-property property="password" value="jemil" />
            <set-property property="minCount" value="1"></set-property>
            <set-property property="maxCount" value="5"></set-property>
        </data-source>
    </data-sources>
    <global-exceptions>
 
    </global-exceptions>
 
    <global-forwards>
        <forward name="welcome"  path="/Welcome.do"/>
    </global-forwards>
 
    <action-mappings>
 
        <action path="/afficher"  scope="request" validate="true" input="/erreurs" type="gestion.client.AjouterFournisseurAction" name="afficherInfo">
            <forward path="/reponse.do" name="reponse"/>
        </action>
        <action path="/choix" name="afficherInfo" parameter="/vues/client/client.ChoisirAfficher.jsp" type="gestion.client.DataSourceConnectionAction">
            <forward name="afficherChoixClient" path="/vues/client/client.ChoisirAfficher.jsp" redirect="true"/>
            <forward name="afficherErreurs" path="/vues/client/client.Erreurs.jsp"/>
        </action>
        <action path="/ajouter" parameter="/vues/fournisseur/fournisseur.ajouter.jsp" type="org.apache.struts.actions.ForwardAction"/>
        <action path="/Welcome" forward="/welcomeStruts.jsp"/>
    </action-mappings>
 
    <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
 
    <message-resources parameter="gestion/client/ApplicationResource"/>
voici mon fichier 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
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
 
<?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">
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
         <init-param>
            <param-name>config/client</param-name>
            <param-value>/WEB-INF/client/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
        </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            /vues/index.jsp
        </welcome-file>
    </welcome-file-list>
    <jsp-config>
        <taglib>
            <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
            <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
        </taglib>
        </jsp-config>
    </web-app>
voici la classe qui va gerer la connexion
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
 
/*
 * DataSourceConnectionAction.java
 *
 * Created on March 25, 2006, 4:04 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
 
package gestion.client;
 
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.sql.*;
import java.util.ArrayList;
import javax.sql.*;
 
/**
 *
 * @author Administrator
 */
public class DataSourceConnectionAction extends Action {
    private DataSource dataSource;
    public ArrayList listeclient = new ArrayList();
    private final static String SUCCESS = "success";
 
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
 
        HttpSession session = request.getSession();
        /** Here the method that connects to the datasource is called: */
        listeclient = getCustomers() ;
        /** Here we put the customerList in scope, so that we can use it in the JSP page: */
        if(listeclient  != null){
            session.setAttribute("affchelisteclient", listeclient);
        }
        return (mapping.findForward(SUCCESS));
    }
 
    private ArrayList getCustomers(){
        Connection conn = null;
        Statement  stmt = null;
        PreparedStatement prpStmt = null;
        ResultSet rs = null;
        StringBuffer  resultString ;
 
        try{
            /** Here 'empTable' maps to the datasource key defined in struts-config.xml: */
            dataSource = (DataSource)servlet.getServletContext().getAttribute("metal");
 
            conn = dataSource.getConnection();
            String requête = "select * from client order by marque";
            prpStmt = conn.prepareStatement(requête);
            rs = prpStmt.executeQuery();
 
            /** Here we put field 4 (the name) and field 7 (the city) in the customerList: */
            while (rs.next()) {
                listeclient.add(new row (rs.getString(1),rs.getString(2), rs.getString(3),rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9), rs.getString(10), rs.getString(11), rs.getString(12), rs.getString(13)));
            }
            rs.close();
 
        } catch ( SQLException e ) {
            System.err.println("SQL Exception occured while accessing the table" );
            e.printStackTrace();
            return null;
 
        } catch ( Exception e ) {
            e.printStackTrace();
            return null;
        }
 
        return listeclient;
    }
}
et le resultat va etre aficher dans cet page qui est en meme temps la page d'acceuil du module gestion des client
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
 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>::>Choix d'un client</title>
    </head>
    <body>
 
    <div align="center"><h1>Choisissez un client</h1></div>
    <div align="center">
       <logic:notPresent name = "affchelisteclient">
            <h2>Data source not in scope!</h2>
        </logic:notPresent>
 
        <logic:present name = "affchelisteclient">
            <logic:empty name = "affchelisteclient">
                <h2>Data source in scope but no data found!</h2>
            </logic:empty>
        </logic:present>
 
        <logic:present name = "affchelisteclient">
            <p>These are our users:</p>
           <html:form action="/afficher"> 
               <table border="1">
                  <%-- <bean:write name="choix" property="matricule" /> <bean:write name="choix" property="marque" />  --%> 
                    <logic:iterate id="choix" name="affchelisteclient">
 
                        <tr>
                            <td>
                                <html:select property="selectclient">
                                    <html:option value=""></html:option>
                                    <html:option value="matricule"><bean:write name="choix" property="matricule" /> <bean:write name="choix" property="marque" /></html:option>
 
                                </html:select>
 
                            </td>
                        </tr>
                        </logic:iterate>
                        <tr>
                            <td><html:submit/></td>
                        </tr>
 
                </html:form>
            </table>
       </logic:present>
    </div>
 
 
    <%--
    This example uses JSTL, uncomment the taglib directive above.
    To test, display the page like this: index.jsp?sayHello=true&name=Murphy
    --%>
    <%--
    <c:if test="${param.sayHello}">
        <!-- Let's welcome the user ${param.name} -->
        Hello ${param.name}!
    </c:if>
    --%>
 
    </body>
</html>
lorsque je lance tomcat et je deploi mon application il m'affiche l'erreur suivante:
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
 
3 juil. 2007 15:06:06 org.apache.catalina.core.ApplicationContext log
INFO: La servlet action est marqué comme indisponible
3 juil. 2007 15:06:06 org.apache.catalina.core.StandardContext loadOnStartup
GRAVE: La servlet /gestion_clients a généré une exception "load()"
javax.servlet.UnavailableException: Initializing application data source metal
        at org.apache.struts.action.ActionServlet.initModuleDataSources(ActionServlet.java:812)
        at org.apache.struts.action.ActionServlet.init(ActionServlet.java:349)
        at javax.servlet.GenericServlet.init(GenericServlet.java:211)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:608)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:493)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1204)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.commons.modeler.BaseModelMBean.invoke(BaseModelMBean.java:503)
        at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1377)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:814)
        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:343)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:174)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
3 juil. 2007 15:06:13 org.apache.catalina.core.StandardWrapperValve invoke
INFO: La servlet action est actuellement indisponible
je n'ai pas compris ce qui ce passe,pourriez vous m'indiquer le droit chemain
Merci