[JDBC Driver][JSTL] Problème de cast de données
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:
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:
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:
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:
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:
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> |