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

Diskutiere JSTL <x:if> <c:if> string vergleichen im Web Tier Forum; 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...

  1. Rhanimm
    Rhanimm Neues Mitglied
    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 kostenlose Training weiter --> (hier klicken)
  3. redJava99
    redJava99 Mitglied
    Ich vermute, es liegt an der Art und Weise wie du Strings vergleichst. (== vs. equals())
    Versuch's mal mit ${param.test eq item}
     
  4. Rhanimm
    Rhanimm Neues Mitglied
    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. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

JSTL <x:if> <c:if> string vergleichen - Ähnliche Themen

Tomcat 7 JSTL
Tomcat 7 JSTL im Forum Server einrichten und konfigurieren
JSTL <c:url> - jsessionid auslesen
JSTL <c:url> - jsessionid auslesen im Forum Web Tier
Listen Ausgabe ohne forEach - JSTL
Listen Ausgabe ohne forEach - JSTL im Forum Allgemeines EE
JSTL foreach rückwärts?
JSTL foreach rückwärts? im Forum Allgemeines EE
jstl: collection property auf mehrere seiten
jstl: collection property auf mehrere seiten im Forum Web Tier
Thema: JSTL <x:if> <c:if> string vergleichen