Avatar billede mogli Nybegynder
17. marts 2003 - 19:24 Der er 13 kommentarer og
1 løsning

Hvorfor vil denne whileløkke ikke du?

Hej allesammen.

Jeg har en whilesætning der ikke helt vil generere den tabel, jeg vil have den til. Er der nogen der har nogle gode råd til den:
Den iterator jeg laver hvor jeg tager adminC.hent...... henter en Vector med alle de fastansatte der er i db'en. pt 5 stk. Og denne ved jeg virker.
Det den skal lave som output, er en tabel hvor der er en række for hver persons navn. Men den vil ikke komme frem. Det er os om at den aldrig kommer ind i While løkken. Håber i kan hjælpe.

<body bgcolor="#c0c0c0">
<h1>
Hovedplanlægningsbilledet
</h1>
<table border="1">
<tr><td><B>Personens navn:</B></td></tr>
<%Iterator i = adminC.hentAlleFastansat().iterator();
  while (i.hasNext()){%>
  <tr><td height="5">
  <%Fastansat f = (Fastansat) i.next();%>
        Personens navn: <%=f.getForNavn()%>
        </td>
  </tr>
<%}%>

<TR><TD></TD></TR>

</table>
</body>


Vh
Miki
Avatar billede disky Nybegynder
17. marts 2003 - 19:32 #1
Hvis den ikke kommer ind i while løkken skyldes det at din Vector ikke indeholder nogle poster.

prøv at indsæt en

<p>Antal poster = <%=adminC.hentAlleFastansat().size()%>

Hvad udskriver den så ?

Smid den ind foran while løkken
Avatar billede mogli Nybegynder
17. marts 2003 - 19:38 #2
Tadaaa, den skriver bare "antal poster = 0" og hvorfor den lige gør det, kan jeg ikke lige regnu ud, for hvis jeg laver følgende i et almindeligt javaprogram, så skriver den godt nok navnene ud på personerne:

v = adminC.hentAlleFastansat();
    Iterator i = v.iterator();
    while (i.hasNext()){
      Fastansat b = (Fastansat) i.next();
      System.out.println(b.getForNavn());
    }
Avatar billede disky Nybegynder
17. marts 2003 - 19:44 #3
Det er fordi den vector du får retur ikke indeholder nogle poster.

Årsagen er måske dit adminC objekt ikke er korrekt instantieret, eller .hentAlleFastansat() ikke er korrekt.
Avatar billede mogli Nybegynder
17. marts 2003 - 19:48 #4
Du får lige hele min side.

hentAlleFastAnsat() dur fint nok, hvis jeg som sagt tester den i en javaapplikation. Her prøvede jeg lige en System.out.printlnv.size() og den skrev rigtig nok 5 ud.

mht. min adminc, så bruger jeg (som du kan se) en bean til dette:

<%@ page errorPage="Mainplanlaegning_error.jsp" %>
<%@ page import="java.util.*" %>
<%@ page import="funktion.*" %>
<%@ page import="model.personer.*" %>
<jsp:useBean id="adminC" scope="session" class="controller.adminController" />

<html>
<head>

<title>
Mainplaenlaegning
</title>
</head>

<body bgcolor="#c0c0c0">
<h1>
Hovedplanlægningsbilledet
</h1>
Her skulle der gerne komme til at stå personens navn
<p>Antal poster = <%=adminC.hentAlleFastansat().size()%>

<%Iterator i = adminC.hentAlleFastansat().iterator();
while (i.hasNext()){
Fastansat f = (Fastansat)i.next();%>
Personens navn: <%=f.getForNavn()%>

<%}%>
</body>
</html>


Og mange tak for de hurtige svar
Avatar billede arne_v Ekspert
17. marts 2003 - 20:08 #5
Jeg er ikke den store JSP bean ekspert, men burde det ikke være:

<p>Antal poster = <%=controller.adminController.hentAlleFastansat().size()%>

<%Iterator i = controller.adminController.hentAlleFastansat().iterator();
while (i.hasNext()){
Fastansat f = (Fastansat)i.next();%>
Personens navn: <%=f.getForNavn()%>

<%}%>

?
Avatar billede arne_v Ekspert
17. marts 2003 - 20:19 #6
Nej det er vist noget vrøvl.
Avatar billede mogli Nybegynder
17. marts 2003 - 20:20 #7
Til arne v - Jeg mener ikke at man kan gøre det på den måde, men skal sige at jeg er ikke sikker. Takker for svarene/kommentarerne begge to. Disky du får lige ded point, selvom jeg ikke lige pt fik det til at virke, men jeg må lige se om det er fordi at den ikke bliver instantieret ordentligt. Fortsat god aften til jer begge
Avatar billede arne_v Ekspert
17. marts 2003 - 20:21 #8
Virker:

<% controller.adminController adminC2 = new controller.adminController(); %>

<p>Antal poster = <%=adminC2.hentAlleFastansat().size()%>

<%Iterator i = adminC2.hentAlleFastansat().iterator();
while (i.hasNext()){
Fastansat f = (Fastansat)i.next();%>
Personens navn: <%=f.getForNavn()%>

<%}%>

?
Avatar billede arne_v Ekspert
17. marts 2003 - 20:22 #9
Det må være et eller andet med instantieringen.
Avatar billede disky Nybegynder
17. marts 2003 - 20:26 #10
Hej Arne

Denne linie:
<jsp:useBean id="adminC" scope="session" class="controller.adminController" />

Gør det samme som:
controller.adminController adminC=new controller.adminController();

dog kun en gang, og gemmer objektet på session stakken.
Avatar billede mogli Nybegynder
17. marts 2003 - 20:28 #11
desværre ikke. Den siger stadigvæk "antal poster = 0". Men ja, det kunne tyde på at det er adminControlleren der ikke bliver instantieret. Specielt da hentAlleFastansat() dur i en "almindelig" java applikation. Mener bare at når man laver en <jsp:useBean id="adminC" scope="session" class="controller.adminController" />  så sørger den selv for at sige "new" til denne.
Avatar billede disky Nybegynder
17. marts 2003 - 20:39 #12
det skulle den gøre.

prøv at byt 'session' ud med 'request' eller 'page'
Avatar billede mogli Nybegynder
17. marts 2003 - 20:51 #13
Så kører det endelig. Det var ikke i adminC eller hentAlle..... der var problemer. Det var noget så fjernt som adgangen til databasen, at den var gal. Så det er jo bare alletider at man tror det ene og så er det, det andet. Men ellers mange tak for hjælpen til jer begge. Og Disky, så har jeg givet dig de 15 point (Godt nok for noget tid siden) selvom det ikke er mange iforhold til hvad du har skrevet. Endnu engang fortsat god aften
Avatar billede disky Nybegynder
17. marts 2003 - 20:59 #14
det med point skal du ikke tænke på, jeg har rigeligt af dem :)

Godt det begyndte at virke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester