JSTL fmt:formatNumber
Wie formatiere ich eine variable mit <fmt:formatNumber> ? Ich Lerne JSTL und konvertieren von alten Struts-tags. Und das funktioniert nicht. Es kann nicht Lesen die Entfernung variable!
<%double distance=geo.getDistance(geo.getLatitude(), geo.getLongitude(), lat, lng);%>
<c:set var="distanceEL" value="${distance}"/>
${distance},
<fmt:formatNumber pattern="0.0" value="${distance}"/>,
<fmt:formatNumber pattern="0.0" value="${distanceEL}"/>,
<fmt:formatNumber pattern="0.0" value="1234.567"/>,
<%= new java.text.DecimalFormat("0.0").format(distance) %>
Wird als
, , , 1234.6, 19.3
Bin ich mit JSTL 1.2. Bisher bin ich nicht beeindruckt.
InformationsquelleAutor Chloe | 2013-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie mischen oldschool Skriptlets mit EL und erwarten, dass Sie die gleichen Geltungsbereich von Variablen. Das ist nicht wahr. EL (die
${}
Dinge) sucht jeweils die Seite, Anfrage, Sitzung und Anwendung Bereiche für die erste nicht-null
Attribut passend zu den gegebenen Namen und gibt ihn zurück. Es nicht auf die scriptlet lokalen Bereich in keiner Weise.Grundsätzlich machen
erhältlich als
${distance}
wollen, müssen Sie es in jeder gewünschten EL Bereiche, z.B. den anforderungsbereichEinmal getan haben, dann können Sie einfach
ohne die Notwendigkeit, massage mit
<c:set>
.Beachten Sie, dass eine Sprach -, Misch - scriptlets mit EL ist nicht die übliche Praxis ist. Verwenden Sie die eine oder die andere. In diesem Fall, dass Java-code gehört in einem preprocessing -servlet-Klasse.
Beachten Sie auch, dass Ihre konkrete problem ist nicht speziell im Zusammenhang mit JSTL. Sie nur zeigte eine nicht-existierende variable.
InformationsquelleAutor BalusC
Wenn Sie wollen, veröffentlichen Sie java-variable zu
${ExpressionLanguage}
müssen Sie es in den Kontext. Es sind application, session, request und page zusammenhängen. Dies ist, was passiert in meiner test-Seite.<% ... %>
tags steht immer für "heavy weight" java-code, Variablen sind nicht direkt sichtbar in JSTL-code.${xx}
EL Variablen in jsp-code.<%= .. %>
embedded-java-scriptlet. Manchmal ist es einfach am einfachsten zu tun auf diese Weise.${EL}
- only-variable auf den heavy weight java-Seite verwendenjsp:useBean
- tag zum erstellen von java-variable. Dann kann es sein gesehen in<%..%>
scriptlets.${distanceEL3}
Wert, als ein Beispiel.tomcat/work/Catalina/localhost/mywebapp/org/apache/jsp/test_jsp.java
- Datei. Sie können sehen, wie die Variablen erstellt werden, wie geschrieben wurde, die java-Datei per hand.test.jsp
InformationsquelleAutor Whome
Ich es gefunden!
Was eigentlich merkwürdig ist, denn ich habe versucht
die Luft gesprengt. Es ist SO verwirrend! Nein, wo ist es erklärt, die hat höhere Priorität, <%%> oder ${}
Ich habe versucht zu lernen, das neue normal, aber das würde nicht funktionieren:
<fmt:formatNumber pattern="0.0" value="${geo.getDistance(geo.getLatitude(), geo.getLongitude(), ${row.latitude}, ${row.longitude})}"/>
, noch würde viele, viele Variationen.Uhm. Siehe meine Antwort für den richtigen Ansatz.
InformationsquelleAutor Chloe