Toon posts:

[JSP] Form -> "incompatible types" prob

Pagina: 1
Acties:
  • 38 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik probeer met een simpele form waar een fietstype en het aantal ingevuld kan worden. De bedoeling is dan dat na het drukken op de knop 'controleren' er wordt gecontroleerd in de database of er nog voldoende voorraad is van dat type fiets. Maar er onstaat een probleem met de verschillende types variabelen (string, int).

code:
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
<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%@ page import = "java.util.*" %>
<%@ page import = "dbase.*" %>

<jsp:useBean id = "Database" scope = "request" 
   class = "dbase.Database" />

<html xmlns = "http://www.w3.org/1999/xhtml">

   <head>
      <title>Test</title>

      <style type = "text/css">
         body { 
            font-family: tahoma, helvetica, arial, sans-serif; 
         }

         table, tr, td, th { 
            text-align: center;
            font-size: .9em;
            border: 2px groove;
            padding: 3px;
            background-color: #dddddd;
         }
      </style>
   </head>

   <body>
   
   <%   
    String sButton = request.getParameter("submit");
    String sNaam = request.getParameter("naam");
    int iAantal = request.getParameter("aantal");

    if (sButton!=null)
    { 
      int iVoorraad = "SELECT FietsVoorraad FROM Fiets WHERE Fiets.FietsNr = " +sNaam+ "";
      if(iVoorraad >= iAantal)
      {
        %>
        Dit kan!
        <% 
      }
    } 
    else 
    { 
    
       %>
       Dit kan niet!
       <%
   
    }
    %>
    
    <form action = "test.jsp" method = "get"> 
      Naam:
      <input type="text" name="naam" maxlength="4" size="15"><br>
      Aantal:
      <input type="number" name="aantal" maxlength="2" size="10"><br>
      <input type="submit" name="submit" value="Controleer">
    </form>
               
</html>


De eerste fout onstaat dus al op regel 36. Mijn vraag is of er een mogelijkheid bestaat om in de form al een type int mee te geven. Of zal de uitkomst uit textveld "aantal" omgezet moeten worden in een integer?

BVD

  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

request.getParameter levert een String af.
Dus er ff Integer.parseInt(request.getParameter("aantal")) van maken en het moet werken

Ducati: making mechanics out of riders since 1946


Verwijderd

Topicstarter
Ja klopt dat werkt, maar het werkt nog niet ik krijg nog steeds een internal error. vermoedelijk komt dat door de if statement:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (sButton!=null)
    { 
      int iVoorraad = "SELECT FietsVoorraad FROM Fiets WHERE Fiets.FietsNr = " +sNaam+ "";
      if(iVoorraad >= iAantal)
      {
        %>
        Dit kan!
        <% 
      }
    } 
    else 
    { 
    
       %>
       Dit kan niet!
       <%
   
    }


Hij kan niet omgaan met een de resultat(en) van de query, die kan niet vergeleken worden met elkaar. Maar hoe los ik dit op?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
int iVoorraad = "SELECT FietsVoorraad FROM Fiets WHERE Fiets.FietsNr = " +sNaam+ "";
Dit kan natuurlijk nooit. Aan het eind heb je ten eerste al een " teveel staan en ten tweede kan je natuurlijk nooit een string aan een int assignen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Is het niet:

code:
1
2
3
<%
Dit Kan
%>


Daarnaast kan je misschien eens kijken of je met parametrized queries kunt werken ipv je queries dmv string concatenation samen te stellen.

https://fgheysels.github.io/


  • TheNameless
  • Registratie: September 2001
  • Laatst online: 07-02-2025

TheNameless

Jazzballet is vet!

Ik denk dat je er goed aan doet om je eens in JDBC te gaan verdiepen, voordat je probeert met een database te werken.

@whoami: Door met <% te beginnen en met %> te eindigen, geef je juist aan dat je met JAVA expressies wil werken. Dit is dus wel juist wat grijsaard gedaan heeft

Ducati: making mechanics out of riders since 1946


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Java:
1
int iVoorraad = "SELECT FietsVoorraad FROM Fiets WHERE Fiets.FietsNr = " +sNaam+ "";

Nee, een integer is geen geheugenadres en kan dus geen referentie naar een string opslaan. Daar gaat alleen [Integer.MIN_VALUE ... Integer.MAX_VALUE ] in.

Waarschijnlijk wil je dat die String die een query moet voorstellen uitgevoerd wordt, dan moet je idd zoals MayaFreak zegt die ook uitvoeren ;) Met deze tutorial moet het lukken

Veel plezier met het uitzoekwerk verder :)

[edit] Oei, rwb vermelde dit al eerder :) Excuus

[edit2] Volgens mij gaat dit trouwens ook niet als XHTML1.0 strict valideren ;)

[ Voor 12% gewijzigd door Glimi op 11-12-2003 16:35 ]

Pagina: 1

Dit topic is gesloten.