JSP JSTL <x:if> <c:if> string vergleichen

Dieses Thema JSP - JSTL <x:if> <c:if> string vergleichen im Forum "Web Tier" wurde erstellt von Rhanimm, 15. Apr. 2015.

Thema: JSTL <x:if> <c:if> string vergleichen Hi, ich habe seit einigen Tagen ein Problem mit meinem Projekt. Zu meinem Vorhaben: Ich habe einen Apache Tomcat...

  1. Hi,
    ich habe seit einigen Tagen ein Problem mit meinem Projekt.

    Zu meinem Vorhaben:
    Ich habe einen Apache Tomcat laufen auf dem sich eine jsp Datei befinden. Diese hat ein Texteingabefeld und einen submit Button.
    Drücke ich den submit Button sollen die Felder einer XML nach Übereinstimmungen durchsucht werden.
    Den String übergebe ich mit der Post Methode.

    Der Haken an der Sache liegt bei mir an der If-Abfrage.
    Dafür habe ich schon verschiedene Dinge probiert.
    Anbei mein Quellcode:

    Seite mit Eingabefeld:
    Code (Java):

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
    <%@ page import="java.text.*" %>
    <%@ page import="java.util.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>HalloJSP</title>
      </head>
      <body>
        <form action="Test.jsp" method="POST">
        <input type="text" name="test" ><input type="submit">
      </body>
    </html>
     

    Seite zur Ausgabe der Ergebnisse:
    Code (Java):

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

    <html>
     
    <head>
    <title>Read Data from XML</title>
    </head>
    <body>

    <c:import var="xml" url="http://localhost:8080/MeineWebApp/Datei.xml" />
    <x:parse xml="${xml}" var="output"/>

    <%--
    <x:forEach select="$output/Bestellungen/Adresse/Ort" var="item" varStatus="i">
        <c:if test="${param.test == item}">
            <li>Test: <x:out select="$item" /></li>
        </c:if>
    </x:forEach>
     --%>

    <x:forEach var="Adresse" select="$output/Bestellungen/Adresse">          
        <x:if select="Ort = param.test">
            <li>Test funktioniert</li>
        </x:if>
    </x:forEach>

    </ul>
    </body>
    </html>
     
    Zu sehen ist, dass ich es sowohl mit <c:if> als auch mit <x:if> versucht habe. Bei beiden funktioniert es auch super, wenn ich statt einer Variable einen festen String nutze.
    Allerdings funktioniert es nicht mit der übergebenen Variable (param.test). Wie kann ich das realisieren?

    Ich hoffe ich konnte mein Problem plausibel darstellen und es kann mir jemand helfen.

    Vielen Dank schonmal :)

    Grüße
    Rhanimm
     
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. Ich vermute, es liegt an der Art und Weise wie du Strings vergleichst. (== vs. equals())
    Versuch's mal mit ${param.test eq item}
     
  4. Vielen Dank für dein Antwort, leider funktioniert es mit eq auch nicht.
    Ich habe vielleicht auch vergessen das Fehlerbild zu erwähnen:
    Fehler werden bei beiden Varianten nicht genannt. Er vergleicht nur nicht das richtige miteinander (soll heißen die if Abfrage ist immer false)

    Bei beiden Varianten kann ich einen beliebigen String angeben (statt item bzw. bei x:if param.test) dann funktioniert es.
    Allerdings macht er Probleme sobald ich bei c:if item nutze bzw. bei x:if param.test.

    Meine Vermutung ist, dass ich die Variablen im falschen Format angebe (zb hab ich auch mal $item versucht) oder dass die Variablen im falschen Format abgespeichert sind.

    Bei dem c:if vermute ich noch ein weiteres Problem: das item wird in einem x:-Tag gespeichert aber in c: abgerufen. Könnte das Probleme machen?
     
    Zuletzt bearbeitet: 22. Apr. 2015
  5. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!