Wie setzt man den JSTL-Variablenwert in Java-Script?
<script>
function function1()
{
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
}
</script>
Wie stelle ich den ' user ' - Variablenwert (JSTL) von ' val1 ' (Java-Skript) ein?
Dies ist nicht möglich, da sie in verschiedenen Umgebungen ausgeführt werden (JSP auf Serverseite, JavaScript auf Clientseite). Sie werden also nicht in der Reihenfolge ausgeführt, die Sie in Ihrem Code sehen.
var val1 = document.getElementById('userName').value;
<c:set var="user" value=""/> // how do i set val1 here?
Hier wird der JSTL-Code serverseitig ausgeführt und der Server sieht die JavaScript/Html-Codes als einfache Texte. Der generierte Inhalt aus JSTL-Code (sofern vorhanden) wird zusammen mit Ihren anderen JavaScript/HTML-Codes im resultierenden HTML-Code dargestellt. Nun stellt der Browser HTML und die Ausführung der Javascript-Codes dar. Denken Sie daran, dass für den Browser kein JSTL-Code verfügbar ist.
Nun zum Beispiel
<script type="text/javascript">
<c:set var="message" value="Hello"/>
var message = '<c:out value="${message}"/>';
</script>
Nun für den Browser wird dieser Inhalt gerendert,
<script type="text/javascript">
var message = 'Hello';
</script>
Hoffe das hilft.
ein weiterer Ansatz zu verwenden.
definieren Sie zunächst irgendwo auf der Seite Folgendes:
<div id="valueHolderId">${someValue}</div>
dann machen Sie in JS einfach etwas Ähnliches
var someValue = $('#valueHolderId').html();
es funktioniert hervorragend, wenn sich alle Skripts in .js-Dateien befinden und offensichtlich kein Jstl verfügbar ist
<script ...
function(){
var someJsVar = "<c:out value='${someJstLVarFromBackend}'/>";
}
</script>
Dieses funktioniert auch wenn Sie haben kein verstecktes/nicht ausgeblendetes Eingabefeld irgendwo im jsp.
Einfach nicht. Schreiben Sie keinen Code mit Code. Schreiben Sie irgendwo ein JSON-Objekt oder eine Variable. Schreiben Sie jedoch keine JavaScript-Funktionen oder -Methoden, die mit Vars/Properties fest codiert sind, die von JSTL bereitgestellt werden. JSON zu generieren ist cool. Es endet dort oder dein UI-Entwickler hasst dich.
Stellen Sie sich vor, Sie müssten in JavaScript graben, um etwas zu finden, das Parameter in der Mitte einer Klasse festlegte, die auf der Clientseite entstand. Es ist schrecklich. Daten hin und her übergeben. Behandeln Sie die Daten. Versuchen Sie nicht, tatsächlichen Code zu generieren.
Als Antwort sage ich Nein. Sie können nur Werte von jstl zu javascript erhalten. Aber Sie können den Benutzernamen mit Javascript selbst anzeigen. Die besten Möglichkeiten sind hier .. Die Anzeige des Benutzernamens Wenn Sie HTML haben
<div id="uName"></div>
Sie können den Benutzernamen wie folgt anzeigen.
var val1 = document.getElementById('userName').value;
document.getElementById('uName').innerHTML = val1;
var userName = '<c:out value="${user}"/>';
hier sind $ {user} die Daten, die Sie als Antwort erhalten (vom Backend).
var arrayLength = <c:out value="${details.size()}"/>;
function advanced(){
var values = new Array();
<c:if test="${empty details.users}">
values.Push("No user found");
</c:if>
<c:if test="${!empty details.users}">
<c:forEach var="user" items="${details.users}" varStatus="stat">
values.Push("${user.name}");
</c:forEach>
</:c:if>
alert("values[0] "+values[0]);
});
Diese Variable kann mit value="${val1}"
in c:set
eingestellt werden, wenn Sie in Ihrem System Jquery verwendet haben.
Sie müssen die normale Zeichenfolgenverkettung verwenden, aber Sie müssen sicherstellen, dass es sich bei dem Wert um eine gültige XML-Zeichenfolge handelt. In dieser Quelle finden Sie eine bewährte Methode zum Schreiben von XML. Http://oreilly.com/pub/h/2127 oder wenn Sie möchten, können Sie eine API in Javascript verwenden, um XML beispielsweise als helma zu schreiben.
Sie können das gesamte Jstl-Objekt als Javascript-Objekt speichern, indem Sie das gesamte Objekt in Json konvertieren. Es ist durch Jackson in Java möglich.
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonUtil{
public static String toJsonString(Object obj){
ObjectMapper objectMapper = ...; // jackson object mapper
return objectMapper.writeValueAsString(obj);
}
}
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib 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/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<uri>http://www.your.url/util-functions</uri>
<function>
<name>toJsonString</name>
<function-class>your.package.JsonUtil</function-class>
<function-signature>Java.lang.String toJsonString(Java.lang.Object)</function-signature>
</function>
</taglib>
<jsp-config>
<tablib>
<taglib-uri>http://www.your.url/util-functions</taglib-uri>
<taglib-location>/WEB-INF/tags/util-functions.tld</taglib-location>
</taglib>
</jsp-confi>
<%@ taglib prefix="uf" uri="http://www.your.url/util-functions" %>
<script>
var myJavaScriptObject = JSON.parse('${uf:toJsonString(myJstlObject)}');
</script>