c:if - seltsames Verhalten

Status
Nicht offen für weitere Antworten.

EOB

Top Contributor
hei, ich habe in meinem code eine abfrage, ob eine zahl groesser oder kleiner 10 ist. das mach ich so:

Code:
searchbean.range: <c:out value='${searchbean.range}' />

<c:if test='${(searchbean.range) > 10}'>
    = groesser   
</c:if>
    
<c:if test='${(searchbean.range) <= 10}'>
    = kleiner   
</c:if>

searchbean.range ist eine zahl, die von 1 bis X geht. ich kann sie mir direkt vor dieser if abfrage ausgeben lassen und sie wird korrekt angezeigt. das seltsame ist, dass kleiner ausgegeben wird, solange searchbean.range <=10 ist, was ja ok ist. aber sobald es groesser ist, wirds immer noch ausgegeben :shock: . aber searchbean.range ist definitv groesser. so siehts bei mir aufm schirm aus:


searchbean.range: 3 = kleiner --> :toll:
searchbean.range: 7 = kleiner --> :toll:
searchbean.range: 12 = kleiner --> :bloed:


so viel kann an den paar codezeilen doch nicht falsch sein? ???:L

jemand ne idee?
 
S

SlaterB

Gast
da würde ich an deiner Stelle weiter testen, hab selber gerade keine Umgebung zur Verfügung,

was ist bei

<c:if test='${(12) <= 10}'>
= kleiner
</c:if>

der normale Weg ist ja ohne Klammer, wie siehts bei

<c:if test='${12 <= 10}'>
= kleiner
</c:if>

und dann bei

<c:if test='${searchbean.range <= 10}'>
= kleiner
</c:if>

aus?

vielleicht wird durch deine seltsame Klammerung der Wert auf true/false = 0/1 gecastet oder ähnlich verrücktes?
versuche also auch mal <= 0, <=1

evtl. auch mit ein bisschen c:eek:ut testen
 

EOB

Top Contributor
das war sehr seltsam. jenachdem, ob ich drueber werte ausgebe mit c:eek:ut, oder nicht geht das :shock: . na ja, jetzt gehts so wie ichs auch dachte...manchmal ists schon seltsam. oder haste dafuer ne erklaerung?

gruesse
 
S

SlaterB

Gast
ich habe das inzwischen getestet und sehe keine Probleme durch die Klammerung,
so wie du bisher den Code beschrieben hast sehe ich nur eine Möglichkeit:

der Inhalt von searchbean.range ändert sich bei den verschiedenen Aufrufen,

könntest du noch ein wenig testen,
indem du z.B. NACH dem Vergleich nochmal den Inhalt ausgibst,
oder in dem Bean jeden Aufruf logst (mit System.out.println)

falls das noch keine Erleuchtung bringt und du viel Zeit hast, könntest du mit
Ersetzung von <= 10 durch <= 0, <= 1, 2, 5, 15, 25 usw.
versuchen, den genauen Wert herauszubekommen, vielleicht hilft der dir weiter

bzw. den Wert nicht direkt vergleichen sondern erst in eine Variable speichern und dann die Variable vergleichen UND die Variable ausgeben,
das kann ja nur irgendein kleiner Denkfehler sein, sowas ist zu 99% kein Mysterium sondern falsche Bedienung

evtl. auch den Scope (pageScope, requestScope, sessionScope) direkt angeben, falls sich da mehrere Objekte gleichen Namens tummeln
 

EOB

Top Contributor
ich lass das jetzt erstmal...ist ohnehin feierabend ;). wenn ich vor dem vergleich

Code:
<c:out value='${searchbean.range}' />

geschrieben habe, hat er mir das ausgegeben, aber der vergleich ging nicht. nehm ichs raus, geht der vergleich :shock: :shock: .

gruesse
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben