# c:if - seltsames Verhalten



## EOB (25. Okt 2006)

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


```
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?


----------



## SlaterB (25. Okt 2006)

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 cut testen


----------



## EOB (26. Okt 2006)

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

gruesse


----------



## SlaterB (26. Okt 2006)

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 (26. Okt 2006)

ich lass das jetzt erstmal...ist ohnehin feierabend . wenn ich vor dem vergleich


```
<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


----------

