Avatar billede funkoo Nybegynder
05. oktober 2001 - 15:57 Der er 19 kommentarer og
1 løsning

session

Jeg har en side a som indeholder en:
session.setAttribute(\"tal\", new Integer(1));

og side b indeholdende:
session.setAttribute(\"tal\", new Integer(2));

På side c vil jeg lave en if-sætning:

<% if (Integer.parseInt(session.getAttribute(\"tal\")=1))

      {%>
        <%@ include file=\"sideA.jsp\"%>
      <%}%>

    <%if (Integer.parseInt(session.getAttribute(\"tal\")=2))
      {%>
    <%@ include file=\"sideB.jsp\"%>
      <%}%>
Der kommer en fejlmeddelse frem som siger:
Invalid left hand side of assignment. if (Integer.parseInt(session.getAttribute(\"tal\")=1))
Avatar billede disky Nybegynder
05. oktober 2001 - 16:09 #1
Hej Igen

Du skal skrive == når du vil sammenligne ikke kune et =

Et = betyder tildeling ikke sammenligning :)

<% if (Integer.parseInt(session.getAttribute(\"tal\")==1))

      {%>
        <%@ include file=\"sideA.jsp\"%>
      <%}%>

    <%if (Integer.parseInt(session.getAttribute(\"tal\")==2))
      {%>
    <%@ include file=\"sideB.jsp\"%>
      <%}%>
Avatar billede funkoo Nybegynder
05. oktober 2001 - 16:18 #2
Den siger at den ikke kan konventer et objekt til Int.

Incompatible type for java.lang.Object. Can\'t convert java.lang.Object to int.
Avatar billede funkoo Nybegynder
05. oktober 2001 - 16:18 #3
Efter at jeg har gjort det du sagde!!
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 16:41 #4
session.getAttribute returnerer et objekt, så hvis det er en Integer du har i attributen skal du type-caste den til det:
Integer myint = (Integer)session.getAttribute(\"tal\")

ellers hvis det er et String objekt kan du caste den til en String først
int k = Integer.parseInt((String)session.getAttribute(\"tal\"))


Hvis det der imod er en parameter f.eks. fra en form eller ligende så skal du have fat i

int i = Integer.parseInt(request.getParameter(\"tal\"));
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 16:42 #5
ja og som disky skriver skal du bruge == ved sammenligning, men det lader ikke til at det er dit første problem
Avatar billede funkoo Nybegynder
05. oktober 2001 - 16:49 #6
Jeg har lige prøvet med:
<%
        int Id = (Integer)session.getAttribute(\"tal\");
        if (Id==2)

      {%>
        <%@ include file=\"soegdeltager.jsp\"%>
      <%}%>
samt afløst int Id med Integer Id
Men det virker stadig ikke!!!
Fejlen er:
Incompatible type for declaration. Can\'t convert java.lang.Integer to int. int Id = (Integer)session.getAttribute(\"tal\"); ^ 1 error
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 17:00 #7
int er en simpel type, modsat Integer
Prøv med
Integer id = (Integer)session.getAttribute(\"tal\");

men er du sikker på at du har smidt en Integer i session, måske vi skulle se koden hvor du gør det.

int er ikke det samme som Integer, bare lige for at slå det fast
Avatar billede funkoo Nybegynder
05. oktober 2001 - 17:05 #8
Jeg har på side a:
session.setAttribute(\"tal\", new Integer(1));

og side b:
session.setAttribute(\"tal\", new Integer(2));

Og jeg har prøvet med Integer id Fejlen  er i denne:
<%
        Integer Id = (Integer)session.getAttribute(\"tal\");
        if (Id==2)

      {%>
        <%@ include file=\"soegdeltager.jsp\"%>
      <%}%>
fejl:
Incompatible type for java.lang.Integer. Can\'t convert java.lang.Integer to int. if (Id==2) ^ 1 error
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 17:10 #9
ok fordi Id er en Integer kan du ikke umiddelbart bruge de simple sammenligningsoperatorer
du skal have fat i noget med

if(Id.compareTo(new Integer(2))){

}
Avatar billede funkoo Nybegynder
05. oktober 2001 - 17:15 #10
Prøvet siger så:
Incompatible type for if. Can\'t convert int to boolean. if(Id.compareTo(new Integer(2))) ^ 1 error

Jeg skal til at tage hjem. Det var et øjeblik før jeg svare tilbage.
Tak for tålmodigheden!!
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 17:40 #11
nå ja undskyld, compareTo returnerer en int der angiver om det er større minde eller lig, så hvis du kigger i Api\'en kan du se at den returnerer 0 hvis tallene er lige store
dvs.
if(Id.compareTo(new Integer(2))==0){
..
}
Avatar billede funkoo Nybegynder
05. oktober 2001 - 18:46 #12
Ja det var sku rigtig.
Kunne man ikke have brugt:
if(compare(new Integer(2),Id)==0){

Men du får lige pointene
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 18:50 #13
hvor har du compare fra?
Avatar billede funkoo Nybegynder
05. oktober 2001 - 18:54 #14
Nu er det således at jeg har to ifsætninger:
<%
        Integer Id = (Integer)session.getAttribute(\"tal\");
      if(Id.compareTo(new Integer(1))==0)

      {%>
        <%@ include file=\"sidea.jsp\"%>
      <%}

        else if(Id.compareTo(new Integer(2))==0)
      {%>
        <%--@ include file=\"sideb.jsp\"%>
      <%}%>
Der gå den hel amok med fejl:
1. \'catch\' without \'try\'. } catch (java.lang.Throwable _jsp_e) { ^
2. : \'}\' expected. } ^
3. \'try\' without \'catch\' or \'finally\'.
4. Statement expected.
Avatar billede funkoo Nybegynder
05. oktober 2001 - 18:56 #15
Min fejl. Jeg læste i en bog at man kunne sammenligne so Strings ved

String.compare()
Så jeg tænke om man ikke kunne gøre det med Integer, altså

if(Integer.compare(new Integer(2),Id)==0){
Avatar billede funkoo Nybegynder
05. oktober 2001 - 19:01 #16
Jeg har fundet fejlen til det andet!!

<%
        Integer Id = (Integer)session.getAttribute(\"tal\");
      if(Id.compareTo(new Integer(1))==0)

      {%>
        <%@ include file=\"sidea.jsp\"%>
      <%}

        else if(Id.compareTo(new Integer(2))==0)
      {%>
-->  <%@ include file=\"sideb.jsp\"%>
      <%}%>
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 19:04 #17
du må have noget mere kode end det der på din side eller?
Avatar billede funkoo Nybegynder
05. oktober 2001 - 19:14 #18
JO jo! Vil du da se det?
Avatar billede mipe1 Nybegynder
05. oktober 2001 - 20:49 #19
det var bare hvis du ikke havde fået udryddet alle fejlene, så kunne jeg måske identificere dem hvis jeg havde hele kildekoden
Avatar billede funkoo Nybegynder
08. oktober 2001 - 01:13 #20
Okay.
Men jeg har fået det løst!!
Iøvrigt ved du hvordan man bedst muligt kan løse problemet med at refresh/reloade side efter at man har fortaget en ændring i f.eks databasen? Jeg har lavet detsådan at efter man har submittet(f.eks slette en person fra en liste), og så kommer der en side som laver behandlingen, hvorefter jeg kan resultatet af listen igen(det har jeg gjort ved at hente alle parameter fra forige side).Men denne måde at kode på er forfærdeligt. Er der ikke en smartere måde? Jeg mener at man kan lave det med popup vinduer!! 
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