Bonjour,

Essayant durement d'intégrer les notions de la JSTL en version 1.2, j'essaie d'écrire une petite application afin de tester les différents tag, dont ceux de la librairie SQL.
Un bloquage cependant sur une instruction INSERT avec une conversion de donnée.

J'ai une table de données, un schéma simple sous PostgreSQL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
gihe=> \d ess.test
              Table "ess.test"
 Column |          Type          | Modifiers
--------+------------------------+-----------
 id     | bigint                 | not null
 nom    | character varying(250) |
Un formulaire HTML me permet de saisir des données en relation avec la able de données.

Le fichier saisie.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
 
<!-- Fichier de saisie des paramètres-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
    <title>Simple Example</title>
    </head>
    <body>
    <%@ include file='header.jsp' %>
    <c:set var="ess" value="test"/>
    <c:out value="${ess}"/>
 
    <form name="test" action="record.jsp" method="get">
        code: <input type="text" name="code"/>
        text: <input type="text" name="text"/>
        <input type="submit" name="ok"/>
    </form>
    </body>
</html>
Le fichier d'action record.jsp contient les instructions pour enregistrer les données dans la table via une requête SQL.

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
 
<%@ 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" %>
<html>
    <head>
    <title>Simple Example</title>
    </head>
    <body>
        <fmt:parseNumber var="ncode" value="${param.code}"/>
        <sql:setDataSource
              driver="org.postgresql.Driver"
              url="jdbc:postgresql://127.0.0.1/gihe"
              user="gihe"
              password="*******"
              var="dataSource" />
        <sql:transaction dataSource="${dataSource}">
            <sql:update>
                INSERT INTO ESS.TEST (ID,NOM) VALUES (?,?)
                <sql:param value="${ncode*1})"/>
                <sql:param value="${param.text}"/>
            </sql:update>
        </sql:transaction>        
    </body>
</html>
Le problème est que TOMCAT affiche un message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
javax.servlet.ServletException: javax.servlet.jsp.JspException: 
                INSERT INTO ESS.TEST (ID,NOM) VALUES (?,?)
 
 
            : ERROR: column "id" is of type bigint but expression is of type character varying
J'ai bien essayé une conversion de type avec fmt:parseNumber sans résultat.

Est-ce possible de convertir des données de cette manière, ou dois-je obligatoirement passer par une bean ?
En passant par une servlet qui gère l'aspect données, ca devrait résoudre le problème, cependant, j'aimerai tout de même arriver à le faire ainsi.

Merci de me mettre sur la piste si possible, je n'ai plus trop d'idée ....

GiHe