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
Un formulaire HTML me permet de saisir des données en relation avec la able de données.
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) |
Le fichier saisie.jsp :
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 <!-- 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 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
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>
J'ai bien essayé une conversion de type avec fmt:parseNumber sans résultat.
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
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
Partager