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

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

redJava99

Bekanntes Mitglied
Ich vermute, es liegt an der Art und Weise wie du Strings vergleichst. (== vs. equals())
Versuch's mal mit ${param.test eq item}
 

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:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J JSP JSTL <c:url> - jsessionid auslesen Web Tier 1
C jstl: collection property auf mehrere seiten Web Tier 2
J JSP JSTL innerhalb Tag-Attribut Web Tier 3
A javax/servlet/jsp/jstl/core/Config Web Tier 1
ruutaiokwu jstl-basierendes tag in jsf 2.0. facelets/xhtml? Web Tier 5
H jstl variable setzen? Web Tier 9
W Java code aus JSP-File durch JSTL code ersetzen Web Tier 8
S JSTL - foreach Schleife ? Web Tier 3
P For-Schleife mit JSTL über ArrayList Web Tier 8
J JSTL-Vergleich (choose) innerhalb JSF-Datentabellen-Aufbau greift nicht Web Tier 4
L Struts JSTL Form Variable Übermitteln Web Tier 2
sliwalker forEach und Scriptlet: Daten aus Scriptlet in jstl sehen Web Tier 2
megachucky JSF - JSTL Library wird nicht gefunden Web Tier 4
T Per JSTL aus 0,45 --> 45 machen Web Tier 2
G [JAVA / JSP] ArrayList in JSTL foreach verarbeiten Web Tier 4
AyKay i18n JSTL Verknüpfung mir der JAR. Wie? Web Tier 9
W JSTL SQL Driver? Web Tier 11
W JSTL macht Probleme Web Tier 6
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
G Session in Servlet Starten und mit JSTL auslesen Web Tier 2
A JSTL Tags funktionieren nicht in Facelets/MyFaces Web Tier 3
OSteNfanT Verzweifle an JSTL Web Tier 2
R Servlet Fetch API gibt einen leeren String aus Web Tier 6
A JSF String wird nicht angezeigt Web Tier 2
G Probleme mit Java + Tomcat | Cannot switch on a value of type String for source level below 1.7 Web Tier 8
M JSF Converter für String to List<String> Web Tier 2
K JSP String[] Array nach Javascript Web Tier 4
J JSF String cannot be cast to javax.faces.model.SelectItem Web Tier 12
B String aufteilen und in Variablen speichern. Web Tier 18
LadyMilka java.lang.NumberFormatException: For input string: ... Web Tier 5
B JSF --- Expression mit String.length() Web Tier 2
I JSF: String abschneiden, wenn zu lang Web Tier 2
J JSF Custom Component ValueExpression wird nur als String erkannt Web Tier 2
ruutaiokwu Wert hinter JSP-Tag nach Java-String in Skriptlet Web Tier 4
W List queryForList(String sql, Class element) Web Tier 4
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben