Können Sie JSTL-Tag c:if test gegen ein url-Muster?
Ich versuche, eine JSP-bedingte, welches auf die aktuelle URL. Im Grunde möchte ich etwas tun, wenn die URL endet in /my-suffix
, NICHT einschließlich der Abfrage-string, etc.. So brauche ich zum testen gegen einen Teilstring der url, die direkt in der Mitte.
<c:if test="url not including query string+ ends with '/my-suffix'">
do something...
</c:if>
Gibt es eine Möglichkeit, dies zu tun?
InformationsquelleAutor Tony R | 2011-12-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kasse die JSTL Funktionen taglib. Einer der verfügbaren Funktionen ist
fn:endsWith()
. Dadurch können Sie zum Beispiel tun:(die
${pageContext.request.requestURI}
gibtHttpServletRequest#getRequestURI()
, die keinen query-string)Oder, wenn Sie bereits auf einem Servlet-3.0-kompatibel-container, die kommt so zusammen mit EL 2.2 wie Tomcat 7, Glassfish 3, etc, dann Sie können auch nur Methoden aufgerufen werden, die mit Argumenten direkt, wie
(String#endsWith()
:Nein, tut es nicht, wie bereits in meiner Antwort (klicken Sie auf die javadoc-link finden Sie maßgebliche Beweise "...bis zu query-string..."). Ist das ein problem? Oder hast du nicht versucht, es überhaupt?
Heh danke BalusC, ich bin nur abgelenkt mit anderen Dingen. Wann immer ich um sich mit dieser Arbeit wieder, ich bin sicher, dass Ihre Antwort wird akzeptiert (als, wenn, Sie Bedarf der Wiederholung!) =P
InformationsquelleAutor BalusC
Weiter hinzufügen BalusC die Antwort mit der folgenden würden auch arbeiten wenn Sie schauen, um eine Zeichenfolge suchen, die irgendwo in der url:
Nebenbei bemerkt: Weder unsere Antworten decken das, was der Titel suggeriert, obwohl (pattern matching), aber das ist nicht das, was der OP suchte, um in seiner post. Das ist eigentlich wenig komplizierter, aber immer noch machbar (jstl nicht über ein regex-match builtin scheinbar). Wenn jemand muss, das zu tun, erstellen Sie eine separate post und link für mich, und ich werde versuchen, Ihnen zu helfen.
InformationsquelleAutor Ghostrydr
Erste Sie tun müssen, würde ein split auf die url, und die frisbee-query params, dann überprüfen Sie mit Hilfe endet-mit etc... scheint chaotisch.
Könnte man nur überprüfen, ob die Zeichenfolge im Pfad?
ZU TUN, DASS >>
Holen Sie sich die path-und set-vars für die URL-Zeichenfolge, die Sie auswerten möchten:
Nun überprüfen, ob Ihr string ist in den Pfad mit indexOf (gibt -1 zurück, wenn die Zeichenkette NICHT gefunden):
**Ich bin neu auf JSTL/EL und bin nur mit dieser Logik für eine ziemlich Banale Aufgabe - hinzufügen einer aktiven Klasse zu einem nav-Taste wenn Sie die aktuelle Seite. Ich würde nicht empfehlen, diese Methode für alles, was wirtschaftlich sensible!
Viel Glück.
InformationsquelleAutor Kelly B