2016-12-20 1 views
0
hat

Wie kann ich eine JS-Funktion automatisch aufrufen, wenn ein zugewiesenes Sitzungsattribut einen Wert an ein ausgeblendetes Eingabefeld in JSP übergibt. siehe bitte unten:Rufen Sie die JS-Funktion auf, sobald die versteckte Eingabe einen Wert aus dem Sitzungsattribut

Java-Klasse:

session.setAttribute("activity1", 1); 
session.setAttribute("activity2", 0); 

JSP:

<table id="activityTbl" style="width: 100%; border:1px solid black;" align="center"> 
<thead> 
    <tr> 
     <td>Activity1</td> 
     <td>Activity2</td> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td> 
      <div id="actDiv1" style="border:1px solid black;"></div> 
     </td> 
     <td> 
      <div id="actDiv2" style="border:1px solid black;"></div> 
     </td> 
    </tr> 
</tbody> 
</table> 
<input type="hidden" id="act1" value="${sessionScope.activity1}"/> 
<input type="hidden" id="act2" value="${sessionScope.activity2}"/> 

Javascript:

$('#act1').change(function(){ 
     if($(this).val() == '1'){ 
      $('#actDiv1').css('background-color', 'green'); 
     }else{ 
      $('#actDiv1').css('background-color', 'red'); 
     } 
}); 
$('#act2').change(function(){ 
     if($(this).val() == '1'){ 
      $('#actDiv2').css('background-color', 'green'); 
     }else{ 
      $('#actDiv2').css('background-color', 'red'); 
     } 
}); 

Sobald der Wert des verborgenen Feld einen Wert aus der Sitzung übergeben enthält Attribut wird das Skript automatisch ausgeführt. So, nach der Übergabe des Wertes, rufen Sie js Funktion sofort auf.

Vielen Dank für Ihre Hilfe, lassen Sie mich wissen, wenn es andere Erklärungen zu diesem Thema gibt.

+0

Ich bin nicht sicher, aber ist 'JSP' Variable nicht nur einmal geparst, wenn HTML geparst wird? Daher wird Ihr Änderungsereignis nie aufgerufen – Rajesh

+1

Dies wird nicht funktionieren. Die Sitzungsvariable wird in das ausgeblendete Feld eingefügt, wenn HTML generiert wird. Der Server gibt eine HTML-Datei mit diesen Werten aus. Es wird kein Änderungsereignis ausgelöst, da Ihre versteckten Eingaben nicht clientseitig geändert werden. – BackSlash

+0

'Sitzung' bleibt immer am Serverende. Und Ihre JS/Webseite wird auf Client-Seite ausgeführt. Jetzt kompiliert die JSP-Engine Ihre JSP und sendet die HTML-Antwort an den Client-Browser zurück. So wird Code wie '$ {sessionScope.activity1}' immer auf Serverseite ausgeführt. Wann immer HTML-Antwort zum Browser kommt; Diese versteckten Felder sind bereits ausgefüllt. In Ihrem JS-Code müssen Sie nur ihren Wert überprüfen. – vijayP

Antwort

0

Beim Laden der Seite erhält die Eingabe id = "act1" den Wert aus der Sitzung. Auch wenn sich der Wert im Sitzungsattribut ändert, wird der Wert in der Eingabe id = "act1" nicht geändert.

Lösung: Ich nehme an, dass Sie einige js verwenden, um den Wert in der Sitzungsvariablen zu ändern. Sie können den neuen Wert manuell in versteckte Eingabe setzen und dann die Änderungsfunktion auslösen.

$('#hidden_input').val('new_value').trigger('change'); 
Verwandte Themen