Wie übergibt man ein Objekt von Spring 3.0-controller JSP-view und test mit JSTL
Erstmal habe ich ein Spring-3.0-controller mit einer Methode, die der folgenden ähnelt.
Bin ich vorbei an der Ansicht eines Objekts mit dem Namen "message" und in der Hoffnung zu drucken, die Meldung über die anzeigen, wenn es gesetzt wurde, von der "doStuff" - Methode.
@RequestMapping("/index")
public ModelAndView doStuff() {
ModelAndView mav = new ModelAndView();
Map<String, String> message = new HashMap<String, String>();
message.put("message", "Hello World");
mav.setViewName("pages/myView");
mav.addObject("message", message);
return mav;
}
Die Ansicht ist ähnlich der folgenden,
<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<html>
<head>
<title>Test</title>
</head>
<body>
<c:if test="${message.message} != null">
<div class="msg">test1: ${message.message}</div>
</c:if>
<c:if test="${message.message} != ''">
<div class="msg">test2: ${message.message}</div>
</c:if>
<c:if test="${message.message}">
<div class="msg">test3: ${message.message}</div>
</c:if>
<c:if test="not empty ${message.message}">
<div class="msg">test4: ${message.message}</div>
</c:if>
<div class="msg">test5: ${message.message}</div>
</body>
</html>
Bisher nur "test5" drucken der Nachricht, aber ich möchte nur zu drucken, wenn die Meldung "${message.Nachricht}" ist nicht null.
Habe ich versucht, sowohl die "http://java.sun.com/jstl/core_rt" und "http://java.sun.com/jstl/core", aber kann nicht scheinen, um den "<c:if />" - Anweisungen, um korrekt zu arbeiten.
Hätte jemand irgendwelche Ideen, was ich falsch mache, oder einen besseren Weg, es zu tun?
Dank
InformationsquelleAutor wsams | 2010-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre ersten beiden
<c:if>
tags sollte wie folgt Aussehen:Beachten Sie die Platzierung der != und die } im test-Attribut-die Bedingung muss innen die geschweiften Klammern.
auch der test in #3:
Wird nur zu true ausgewertet, wenn der Wert der Nachricht.die Nachricht ist in der Tat der Wert "true". Da es nicht (es wird "Hallo Welt"), schlägt der test fehl.
Test #4 ist auch falsch formatiert ("nicht leer" muss auch innerhalb der Klammern)...
Sie nur wirklich brauchen Sie, um loszuwerden, die veraltet URI ' s und alle alten JSTL-JAR. Siehe auch meine Antwort.
InformationsquelleAutor BCunningham
Die taglib URI ist falsch. Es ist die alte JSTL 1.0 URI. Wo hast du es bekommen? Werfen, dass die 10-jährige tutorial/Buch Weg 😉 Go get JSTL 1.2 hier und legen Sie es in
/WEB-INF/lib
nach dem entfernen einer alten JSTL-Tag-Bibliotheken (jstl.jar
undstandard.jar
) und die eventuelle extrahierten Inhalt (einige schlechte tutorials nämlich suggeriert, dass Sie brauchen, um zu extrahieren die.tld
Dateien und steckte es in classpath, das ist falsch).Die richtige URI ist in den letzten JSTL TLD Dokumentation. Wenn Sie klicken Sie auf die einzelnen JSTL-Tag-Bibliotheken, Sie werden sehen, die richtige URI-Beispiel im oberen Bereich des Dokuments, z.B. JSTL core:
Sagte, die tests sind in der Tat falsch. Sollten Sie verwendet haben
${message.message != null}
,${message.message != ''}
und${not empty message.message}
. Sie können lernen, mehr über EL in Java EE tutorial-Teil II-Kapitel 5 und über JSTL in Java EE tutorial-Teil II-Kapitel 7. Viel Glück.InformationsquelleAutor BalusC
Die URI, die Sie suchen, ist
http://java.sun.com/jsp/jstl/core
InformationsquelleAutor skaffman