Struts String vergleich

daseinmaleins

Grünschnabel
Hallo,

ich möchte 2 Strings in einer JSP Seite vergleichen.

<c:choose>
<c:when test="${artikel.titel == suchergebnis}">
<c:set var="anzeigenFlag" value="true"/>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>

damit klappt das auch, aber ich möchte auch, dass wenn der Titel eine Teilmenge von dem Suchergebniss ist, das er mir alles mit dieser Teilmenge anzeigt.

z.B. in einer Datenbank liegt als Titel "How do you do" und wenn ich nun in meine Suchleiste "How" eingebe, soll mir auch "How do you do" angezeigt werden.

ich habe instanceOf probiert, dies gelingt aber nicht.

Vielen Dank.
 
Hallo,

irgendwie finde ich deine Definition von Suchergebnis komisch. Das ist doch eigentlich genau die Liste, die du darstellen willst, oder? Das was du da vergleichst, ist der eigentliche Suchstring, richtig? (Nur damit ich nicht auf was falsches antwort ;)

Ich glaub, du kommst nicht drumrum in nem Scriptlet den Artikeltitel mit den Standard Java Stringfunktionalitäten auf den Suchstring hin zu durchsuchen und dementsprechend den Artikel anzeigen oder nicht, im c:choose geht das so net.

Zwei Anmerkungen noch:
1. Wenn du kein else brauchst, reicht c:if ;)
2. Würde ich solche Logik in einen Controller auslagern und auf der Seite selbst nur noch die Liste anzeigen um Scriptlets zu vermeiden.

Gruß,
Ollie
 
Hallo und danke für die Antwort,

ich bekomme ja die richtigen Artikel angezeigt, wenn der Suchstring z.B. Test ist, und der Artikelname auch Test ist. Wenn ich was anderes reinschreibe ausser "==" dann schmeißt mir der Tomcat folgende Fehlermeldung.

"${artikel.titel equals suchergebnis}" contains invalid expression(s): javax.servlet.jsp.el.ELException: Encountered "equals", expected one of ["}", ".", ">", "gt", "<", "lt", "==", "eq", "<=", "le", ">=", "ge", "!=", "ne", "[", "+", "-", "*", "/", "div", "%", "mod", "and", "&&", "or", "||", "?"]

Das heißt, ich kann nur diese Zeichen in der Choose Anweisung benutzen. Aber ich hab noch nicht rausgefunden was die Akürzungen bedeuten.
Außer eq für equals.

Gruß
 
eq ist quasi "==". Wenn du aber Strings vergleichen willst musst du .equals nehmen, also einen Methodenaufruf auf dem Objekt machen. Das erlaubt aber die Expressionlanguage nicht, da sie aus object.property object.getProperty() macht und dein object.equals zu object.getEquals() würde.

Nochmal, so leid es mir tut, es geht nicht ;)

Gruß
Ollie
 
Das hab ich auch gemerkt, trotzdem vielen Dank für die Hilfe.

Ist sowieso für den letzten Schein an meiner Uni. Schreib schon grad meine Diplomarbeit.
Der Prof. hat auch nur eine Suchfunktion verlangt und die hab ich ja eingebaut. ;-)


Gruß

Stephan
 
Zurück