Bonjour à toutes et à tous,

Je me débat avec un petit problème de driver JDBC sous PostgreSQL.
Je développe une petite application de tests des JSTL/JSP/EL sous tomcat et postgreSQL.

L'appli est formée par une table basique, un formulaire HTML de saisie et une JSP permettant d'enregistrer les données dans la table.

Description de la table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
gihe=> \d ess
             Table "public.ess"
 Column |          Type          | Modifiers
--------+------------------------+-----------
 id     | integer                | not null
 text   | character varying(100) |
En fait, tomcat me renvoie une erreur :

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
 
javax.servlet.ServletException: javax.servlet.jsp.JspException: 
    INSERT INTO ESS (ID,TEXT) VALUES (?,?)
 
 
: ERROR: column "id" is of type integer but expression is of type character varying
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:844)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
	org.apache.jsp.record_jsp._jspService(org.apache.jsp.record_jsp:115)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Apparement, le problème proviendrait d'un mauvais mapping des types de données JDBC.
J'ai essayé avec MySQL, tout fonctionne bien.
En intégrant les données directement dans la requête; ca fonctionne aussi.
En fait, postgreSQL fait un mauvais cast des données !

Si quelqu'un avait une idée, je suis preneur de toute piste, url, doc, ...
Merci d'avance.

Ensemble des codes pour info :
-------------------------------------


Le formulaire HTML :
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
 
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>Simple Example</title>
</head>
<body>
    <h1> Saisie de données  </h1>
    <form name="saisie" action="record.jsp" method="get">
        Code :<input type="text" name="code"/>
        Text :<input type="text" name="text"/>
        <input type="submit" name="submit"/>
    </form>
</body>
</html>
La 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
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page isELIgnored ="false" %> 
<html>
<head>
<title>Simple Example</title>
</head>
<body>
 
<sql:update>
    INSERT INTO ESS (ID,TEXT) VALUES (?,?)
    <sql:param>${param.code} </sql:param>
    <sql:param>${param.text}</sql:param>
</sql:update>
 
</body>
</html>
et le 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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
 
<web-app>
    <description>Learning JSTL (or whatever you like</description>
    <context-param>
		<param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name>
		<param-value>jdbc:postgresql://127.0.0.1/gihe,org.postgresql.Driver,gihe,Dlm2ppedGiHe</param-value>
	</context-param>  
</web-app>