[JSF] JSTL Tags werden nicht interpretiert

Hallo ihr zwei,

sorry, ohne Code könnt ihr mir nur geringfügig weiterhelfen.
Ich benutze das Lomboz-Eclipse. Meine tlds sind alle unter WEB-Inf/lib.
Hier mein Code in der JSP-Datei, welche ich nur zum Testen der EL benutze:

Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link href="pharmaservices.css" rel="stylesheet" type="text/css">
<title>Test</title>
</head>

<jsp:useBean id="searchBean" class="de.fau.ontodrug.DrugSearch" scope="session"/>
<jsp:useBean id="TMUtil" class="de.fau.ontodrug.TMUtil" scope="session"/>
<jsp:setProperty name="searchBean" property="packageName"/>
<jsp:setProperty name="searchBean" property="processed"/>
<jsp:setProperty name="searchBean" property="searchCase"/>

<body>

<%-- header area --%>
<jsp:include page="header.jsp" />
<%-- end header area --%>

<%-- navigation area --%>
<jsp:include page="navigation.jsp" />
<%-- end navigation area --%>

<%-- beginn form --%>
<div id="Input">
<form>
Arzneimittel: <input type="text" name="packageName" value="Bitte eintragen">
&nbsp;
<label><input name="searchCase" type="radio" value="Nebenwirkung" checked>&nbsp;Nebenwirkung</label>
&nbsp;
<label><input name="searchCase" type="radio" value="Kontraindikation">&nbsp;Kontraindikation</label>
&nbsp;
<input type="submit" value=" Suchen "/>
<input type="hidden" name="processed" value="true"/>
</form>
</div>

<br>
<%-- end form --%>

    <c:forEach var="i" begin="1" end="10" step="1">
      <c:out value="${i}" />

      <br />
    </c:forEach>
    
    RemoteHost: <c:out value="${pageContext.session.remoteHost}"/><br>

<c:if test="${searchBean.packageName}">
<c:out value="Hello"/>
</c:if>

<c:out value="Hello"/>

<%-- beginn output area --%>
<% if (searchBean.isProcessed()&
		(searchBean.getPackageName()!= null) &
		(searchBean.getSearchCase()!= null)) { 
		%>
		

<div id="Main">

<div id="Titel">
<jsp:getProperty name="searchBean" property="packageName"/>
</div>

<br>

<div id="Inhalt">

<div id="Titel">
<%=searchBean.getSearchCase()%>
</div>

<%=searchBean.querySideEffects()%>

<%  } %>

</div>

</div>
<%-- end output area --%>


<%-- beginn footer area --%>
<jsp:include page="footer.jsp" />
<%-- end footer area --%>

</body>
</html>

Und hier der Inhalt meines web.xml - Files:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
	<display-name>TopicMaps</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	
	<taglib>
      <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
      <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
      <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
	  <taglib-location>/WEB-INF/c.tld</taglib-location>
	</taglib>
	<taglib>
      <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
      <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
      <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
      <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
      <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>
    <taglib>
      <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
      <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
    </taglib>
	
</web-app>

Soweit ich dass sehe habe ich alles richtig einrichtet. Könnt ihr mir vielleicht sowas wie eine kurze Checkliste durchgeben, die man befolgen muss um die Expression Language zum laufen zu kriegen. Ich hab leider keine Ahnung mehr wo ich noch schauen soll. Hab schon dutzende Tutorials durchstöbert, aber meine EL-Teile werden nicht interpretiert.

Danke schonmal im Voraus für Eurer Bemühungen.

Gruss
El_deguito
;)
 
Tach,

nur mal so allgemein JSTL != EL. JSTL sind die Tags und EL die ${blub} Ausdrücke. Du kannst EL auch ohne JSTL verwenden.

So zu deinem Problem. Du referenzierts eine Taglibrary in deiner JSP über eine URI. Die gleiche URI solltest du also auch in deiner Web-XML innerhalb von <taglib></taglib-uri> einsetzen.
Des weiteren solltest du natürlich bei der <taglib-location> das korrekte Verzeichniss verwenden. In deinem Fall also
Code:
<taglib-location>WEB-INF/lib/c.tld</taglib-location>
wenn du die TLD's in WEB-INF/lib gepackt hast

Dann noch am Rande - vergiss diese RT-Teile. Das Zeug stammt noch aus der guten alten Zeit, sollte aber in Zeiten von JSP2.0 und JSTL 1.1 nicht mehr bei Neuentwicklungen verwendet werden.

Einen guten Gesamtüberlick über die ganze J2EE erhält man z.B. hier.

Gruß
THMD
 
Hallo THMD,
danke erstmal für Deine Tipps. Das ich ELs auch ausserhalb JSTLs verwenden kann, war mir zwar schon klar. Ich hab auch vergessen zu erwähnen, dass meine Taglibs anscheinend interpretiert werden. Nur meine EL-Ausdrücke werden nicht interpretiert. Auch wenn ich die URIs korrigiere, wie Du es vorgeschlagen hast. Ich hab jetzt auch alle RT-Blöcke herausgenommen aus der web.xml. Hättest Du mir vielleicht einen direkten Link zur aktuellsten Version der JSTL 1.1 ?

Danke für Deine Bemühungen schon mal im Voraus.
Gruss
El_deguito
;)
 
Guten Abend,

die JSTL gibts zum Beispiel bei SUN als Bestandteil des WebServiceDeveloperPack . Früher gabs die Referenzimplemntierungen mal extra, aber das wurde scheinbar wegrationalisiert. Is ja auch viel schöner Komplettpackete von mehreren MB für ein paar kleine jar's zu ziehen - naja SUN halt.

Zu deinem EL-Problem. Bist du Dir sicher, dass EL nicht funktioniert? Hast du einen EL-fähigen ServletContainer? Probier doch mal folgendes aus. Gib auf einer JSP mal folgendes Statement ein
Code:
${pageContext.class}
und zwar ohne Tags drumrum. Wenn die JSP dann was anzeigt (in dem Fall den Klassennanem der ContextKlasse), dann funktioniert EL, wenn nicht solltest du deinen Servlet-Container updaten.

Ansonsten fallen mir spontan zwei Sachen bei den von dir verwendetenJSTL-Tags ein, mit denen es eventuell zusammenhängen könnte.

1. Lass mal die ganzen <c:eek:ut> Sachen weg - braucht man nicht, wenn EL vernünftig läuft.

2.
Code:
<c:if test="${searchBean.packageName}">
Falls packageName ein boolean zurück gibt ist es ok, ansonsten wird es nicht funktionieren. Bei dem if test muss innerhalb der Klammern ein boolean rauskommen.

Jo das wars erstmal.

Gruß
THMD
 
Der Servlet-Container ist wahrscheinlich nicht aktuell

Hi THMD,

thanxs für Deinen Tipp. Hab Dein Anweisung befolgt und
Code:
${pageContext.class}
ohne Tags in die jsp geschrieben. Scheint wirklich am Servlet-Container zu liegen.
Leider bin ich noch ein Grünschnabel was die Programmierung mit Java in Eclipse angeht.
Könntest du mir bitte verraten wie ich den Servlet-Container in Eclipse update, d.h. wo kann ich einen aktuellen Servlet-Container bzw. die entsprechenden Jars runterladen. Und wenn ich dies getan hab. In welches Verzeichnis muss ich die Jars dann schmeissen bzw. was ist sonst noch nötig um den Container upzudaten.

Ich wäre Dir dankbar wenn Du mir weiterhelfen könntest.
Vielen Dank im Voraus.
Gruss
El_Deguito
;)
 
Guten Abend,

lass mich raten, du hast dich am Tutorial bei Lomboz orientiert und den Tomcat 4.irgendwas installiert? Dann geht kein EL (jedenfalls nicht out of the box), da JSP 2.0 nicht unterstützt wird.
Ein aktueller Servlet Container wäre z.B. Tomcat 5.5. Der wird auch direkt vom WTP (respektive Lomboz, dass inzwischen ja komplett drauf aufbaut) unterstützt. Den Tomcat findest du hier. Den Tomcat kannst du dann irgendwo installieren und richtest dann eine neue Server Runtime ein, nur dass du diesmal halt nicht den im bei Lomboz beschrieben 4er sondern den 5.5er nimmst.

hth

THMD
 
Sorry,
in diesem Fall scheint der Servlet-Container dann nicht das Problem zu sein. Ich habe auf meiner Maschine den TomCat 5.5 laufen. Also scheint doch der aktuellste zu sein.
Und mein Lomboz scheint auch der aktuellste zu sein. Zumindest lässt sich kein Neuerer downloaden.
Weiss so langsam echt nicht mehr wo ich schauen soll. Ist aber schon irgendwie merkwürdig, dass ausgerechnet die EL nicht interpretiert wird.
Hast Du vielleicht noch eine andere Idee an was es liegen könnte.

Ich hoffe ich bring Euch nicht zur Verzweiflung.
Vielen Dank für Euer Bemühungen mich doch noch auf den Pfad der Erleuchtung zu bringen.
Gruss
El_deguito
;)
 
N'Abend

Also das ist alles sehr seltsam - hast du irgendwelche Fehlermeldungen in der Console von Eclipse bzw. in den Log-Files (logs/catalina.out) des Tomcat? Weil irgendwas muss er ja haben wenn noch nicht mal die einfachen Sachen funktionieren.

Edit:

Obwohl - versuch mal einen vollständigen Wep-app descriptor, also

Code:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4"> 

</web-app>

IIRC muss das komplett da stehen und in deinem Beispiel steht gar nix - hatte ich übersehen - sorry

Gruß
THMD
 
Zuletzt bearbeitet:
Hossa, Jungs ic danke Euch,

Daran lags. Die zusätzlichen Attribute im <web-app>-Tag haben gefehlt. Jetzt läuft dat Ding.
Ihr seid Spitze.

Wünsch Euch noch nen relaxten Tag und viel Spass beim hacken.

Gruss
El_deguito
;)
 
Fehlermeldung wegen Tablibs in web.xml

Hallo nochmal ihr zwei Meister,

jetzt werden zwar meine EL-Ausdrücke interpretiert, aber im Eclipse krieg ich jetzt im web.xml Code Fehlermeldungen wie im anghängten Bild. Kann es sein, dass das nun verlinkte Schema eine explizite Struktur verlangt. Hat einer von Euch zufällig schon eine fertige web.xml, mit allen Elementen, die Pflicht sind auf Lager. So dass ich evtl. nur noch den Content der Elemente anpassen muss. Klingt jetzt etwas faul, aber mir fehlt, da etwas der Durchblick, da ich noch den Umgang mit den DTDs gewohnt bin.

Vielleicht könnt ihr mir ja noch einmal helfen.

Wäre Euch dankbar.

Gruss
El_deguito
;)
 

Anhänge

  • problem.gif
    problem.gif
    14,8 KB · Aufrufe: 57

Neue Beiträge

Zurück