webentwicklung-frage-antwort-db.com.de

Wie kann der JSTL-Variablenwert in Javascript festgelegt werden?

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?

34
Tony

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.

43

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

11
Cyril Deba
<script ...
  function(){
   var someJsVar = "<c:out value='${someJstLVarFromBackend}'/>";

  }
</script>

Dieses funktioniert auch wenn Sie haben kein verstecktes/nicht ausgeblendetes Eingabefeld irgendwo im jsp.

4
Vikram

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.

2
Erik Reppen

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;

Um Daten von jstl zu Ihrem Javascript zu erhalten:

var userName = '<c:out value="${user}"/>';

hier sind $ {user} die Daten, die Sie als Antwort erhalten (vom Backend).

Zuweisungsnummer/Arraylänge

var arrayLength = <c:out value="${details.size()}"/>;

Erweitert

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]);

}); 
0
shreedhar bhat

Diese Variable kann mit value="${val1}" in c:set eingestellt werden, wenn Sie in Ihrem System Jquery verwendet haben.

0
mohiz tank

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.

0
Kronass

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);
   }
}

/WEB-INF/tags/util-functions.tld:

<?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> 

web.xml

<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>

mypage.jsp:

<%@ taglib prefix="uf" uri="http://www.your.url/util-functions" %> 

<script>
   var myJavaScriptObject = JSON.parse('${uf:toJsonString(myJstlObject)}');
</script>
0
Dariush Jafari