2010-11-08 18 views
7

jstl javascript içinde kullanmak mümkün mü?jstl inside javascript

Ben <c:set var="abc" value="yes"/>

ayarlamak ve daha sonra html bu değeri erişebilir ve bazı kod çalıştırmasına etmeye çalışıyorum. Sorunum c: set javascript koşulu yanlış olsa bile her zaman çalışıyor. Yukarıdaki kodda, v1 yanlış olsa bile 'no' ayarı abc olarak ayarlanmış olsa bile, yukarıdaki kodda.

+2

bunu okuyun: noktaya http://balusc.blogspot.com/2009/05/javajspjsf-and-javascript.html: Java/JSP/JSTL/EL web sunucusu çalışır ve üretir HTML/CSS/JS. Web sunucusu, HTML/CSS/JS'yi web tarayıcısına gönderir. Webbrowser HTML/CSS/JS'yi alır ve yürütür. Java görevini doğru yapmışsa, web tarayıcısı herhangi bir Java/JSP/JSTL/EL kodunu almamış olmalıdır. Basitçe anlamadığı için. – BalusC

+0

bu güzel bir blogdu ... – coder247

cevap

18

Sunucu tarafı JSP yorumundan bahsederken "Javascript'in içinde" olma düşüncesinin bir anlamı yoktur. Bu alan adıyla ilgili olarak Javascript diye bir şey yoktur. size alıntı ve özel karakterler ile dikkatli olmak zorunda

var something = '${abc}'; 

Not böyle bir şey yapmak istediğiniz anlamına eğer

Böylece, evet, bu, mümkün. JSTL fn:escapeXml() işlevi, bir JSP değişkenini tarayıcı tarafından Javascript kaynağı olarak yorumlanacak sayfanın bir bölümüne enterpolasyon yaparken işe yaramaz. Dizelerinizi kodlamak için bir JSON kitaplığı kullanabilir veya bunu yapmak için kendi EL işlevinizi yazabilirsiniz.

4

Bu oldukça eski bir iş parçacığıdır, ancak aynı sorunla karşılaştığımda karşılaştığım bir tanesi. Bir çözümü kendim düşündüğümden beri, gelecekte birilerine yardım etmesi için onu buraya göndereceğim.

html (veya jsp) dosyası, javascript kaynağı olarak bildirilen dış dosya içindeki metni arar. Tomcat (veya benzerleri) yalnızca JSTL etiketlerini .jsp uzantısına sahip dosyalar içinde yorumlar (veya belki başkaları da olabilir, ancak bu yanıt için ilgisizdir).

Yani, (örneğin javascript_js.jsp için javascript.js)

javascript_js.jsp üstündeki bu satırları ekleyin it a .jsp uzantısı vermek için .js dosyasını yeniden adlandırın:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

ve kodu değişmeden bırak.

Açıkça, başlıkta c: dışında başka bir tane kullanırsanız, daha fazla önek eklemeniz gerekir.

Eclipse (diğer IDE'leri bilmiyorsanız) kullanırsanız, javascript dosyası olmadığını ve farklı anahtar kelimeler için renk düzenini (var, işlev vb.) Kaybettiğini varsayar, var adı otomatik tamamlama ve otomatik girinti.

siz ("<% @" bildirimleri sonra) gerçek kodundan önce, bir js yorum olarak

// <script> 

ekleyebilir, IDE aptal ve sonunda

// </script> 

için Dosya, yine bir js yorum olarak.

Benim için çalıştı.

3
<script> 
    <c:set var="myVal" value="Hello"/> 

    var val1="${myVal}"; 

</script>