Map und JSP mit EL

schnuffie

Erfahrenes Mitglied
Hallo JSP-Experten,

wie kann ich meine Map im weiteren Quellcode mit EL (Expression Language) nutzen?

In meinem Beispiel funktioniert die normale Ausgabe einwandfrei. Bei Verwendung von EL kommt allerdings im "empty"-Bereich "false", die anderen EL-Ausgaben, die die Map auslesen sollen bringen einen leeren String.

Meine Versuche:
Code:
${map["heute"]}
Code:
${pageScope.map["heute"]}
Code:
${page.map["heute"]}

Die beiden letzten Versuche bringen eine ELException.:(

Meine Test-JSP:
Code:
<html>
<head>
<title>Expression Language EL</title>
</head>
<%@ page isELIgnored="false" %><%-- EL soll eingeschaltet sein --%>
 
<jsp:directive.page import="java.util.*,java.text.*" />
 
<body>
 
<jsp:declaration>
private static SimpleDateFormat SDF = new SimpleDateFormat("dd.MM.yyyy");
private Map map = new HashMap();

private void fillMap() {
Calendar date = Calendar.getInstance();
map.put("heute", SDF.format(date.getTime()));
date.add(Calendar.DATE, -1);
map.put("gestern", SDF.format(date.getTime()));
date.add(Calendar.DATE, 2);
map.put("morgen", SDF.format(date.getTime()));
}

 
public void jspInit() {
fillMap();
}
</jsp:declaration>
<h4>Heute ist der <jsp:expression> map.get("heute") </jsp:expression>.</h4>
<h4>Also war gestern der <jsp:expression> map.get("gestern") </jsp:expression><br>
und morgen ist der <jsp:expression> map.get("morgen") </jsp:expression>.</h4>
<br>
 
<h3>...und jetzt mit EL:</h3>
 
<h4>Host=${header["host"]}</h4> <%-- nur dieser Ausdruck funktioniert --%>
<h4>Datumswerte=${!empty map}</h4>
<h4>Heute ist der ${map["heute"]}.</h4>
<h4>Also war gestern der ${map["gestern"]}<br>
und morgen ist der ${map["morgen"]}.</h4>

</body>
</html>

Nur die roten Einträge bringen nicht das gewünschte Ergebnis.:suspekt:

Ich hoffe ihr könnt mir helfen!

CU schnuffie :confused:
 
Auch wenn sich noch Keiner gemeldet hat... :(

Ich hab's geschafft! :)

als Seiten-Attribut hinzufügen:
Code:
<jsp:scriptlet>
pageContext.setAttribute("date_map", map);
</jsp:scriptlet>

dann so auslesen:
Code:
${pageScope.date_map["heute"]}

Jippi! :)
 

Anhänge

  • browser.gif
    browser.gif
    4,9 KB · Aufrufe: 25

Neue Beiträge

Zurück