2011-01-26 15 views

cevap

67
alert("${variable}"); 

veya

alert("<%=var%>"); 

veya tam örnek

<html> 
<head> 
<script language="javascript"> 

function access(){ 
    <% String str="Hello World"; %> 
    var s="<%=str%>"; 
    alert(s); 
} 

</script> 
</head> 

<body onload="access()"> 
</body> 

</html> 

Not: işleme önce girdileri, bu XSS olanakları sürü açabilir

+3

:) –

+2

Ayrıca, bu makale okumak jsp de müşteri veriyi erişebilir, çok net bir şekilde JS ve JSP kavramını expalins - http: //balusc.blogspot .in/2009/05/javajspjsf-ve-javascript.html –

+1

@JigarJoshi: hiçbir suç demek ama cevap, bu konudaki cehaletin çok basitçe var sanıyorum/eski okul gerçekten kirli olduğunu düşünüyorum. Cevabım hakkında ne düşünüyorsun? cevabınıza –

6
<% String s="Hi"; %> 
    var v ="<%=s%>"; 
10

varsayarsak Java hakkında konuşuyorsun Bir HTML belgesindeki komut dosyası.

JSP söz konusu olduğunda, metin çıktısı aldığından ve sayfa söz konusu olduğunda, bir HTML belgesi aldığından beri bunu doğrudan yapamazsınız.

JS'de özel anlamıyla karakterleri olan karakterlerden kaçmak için değişkenini oluşturmak için JavaScript kodu oluşturmanız gerekir. Verileri (diğer bazı cevaplar tarafından önerildiği gibi) döküyorsanız, verilerin yeni satırlar, alıntı karakterleri vb. Içermesi durumunda bunun düşeceğini görürsünüz.

Bunu yapmanın en kolay yolu (http://json.org/ alt kısmında listelenen bir demet vardır) bir JSON kitaplığı kullanmak ve sonra JSP çıkışına sahip olmaktır:

<script type="text/javascript"> 
    var myObject = <%= the string output by the JSON library %>; 
</script> 

Bu size bir nesne verecektir size JS'de şu şekilde erişim yapabilirsiniz:

.

+1

bir jsFiddle? çok kabaca olsun lütfen fikir verebilir muamelesi almaz çünkü neden? –

+0

Hayır. JSFiddle, JSP'yi yürütmeyecektir – Quentin

+1

yeterince adil, ancak JSP'nin çıkacağı değeri basitçe kodlayabilir miydiniz? –

19

en temiz yolu olarak bildiğim kadarıyla:

gerektiğinde

  1. bir HTML elementin DATA- için JSP değişken eklemek *
  2. sonra Javascript üzerinden bu değeri okumak bağlıyor Benim Bu SO sayfasındaki mevcut çözümler hakkında fikir: gerçek javascript kodu içinde java betik kullanarak "doğrudan" JSP değerleri okumak muhtemelen yapabileceğiniz en iğrenç şeydir. Beni kusmak istiyor. haha. Cidden, yapmaya çalış.

    JSP olmadan HTML kısmı: JSP kullanarak

    <body data-customvalueone="1st Interpreted Jsp Value" data-customvaluetwo="another Interpreted Jsp Value"> 
        Here is your regular page main content 
    </body> 
    

    HTML kısmı: (basitlik için jQuery kullanarak)

    <body data-customvalueone="${beanName.attrName}" data-customvaluetwo="${beanName.scndAttrName}"> 
        Here is your regular page main content 
    </body> 
    

    javascript kısmı:

    <script type="text/JavaScript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script> 
    <script type="text/javascript"> 
        jQuery(function(){ 
         var valuePassedFromJSP = $("body").attr("data-customvalueone"); 
         var anotherValuePassedFromJSP = $("body").attr("data-customvaluetwo"); 
    
         alert(valuePassedFromJSP + " and " + anotherValuePassedFromJSP + " are the values passed from your JSP page"); 
    }); 
    </script> 
    

    Ve burada Bu eylemde görmek jsFiddle olduğunu http://jsfiddle.net/6wEYw/2/

    Kaynaklar:

+0

Bu yöntem, temel bir String olan Model nesnesi ile iyi çalışır, ancak bir JSON değeri ise, JSON içindeki tüm çift tırnakların kaçması gerekir; bu sorunludur. –

+0

@JamieBurke yeterince adil, JSON değerlerini saklamak için hiç kullanmayı denemedim. Bu özel soruna genel bir çözüm olabilir, bunun soruşturmaya ihtiyacı olacaktır. –

+0

1-çizgili bir çözümün neden kusmak istediğinizi anlamakta zorlanıyorum, bu karışıklık bir şekilde olmaz. Aydınlatmamaya dikkat et? Düşünmüyorum bazı kenar durum var mı? – katzenhut

0
jQuery http://api.jquery.com/attr/ aracılığıyla eleman niteliği

Her şeyden önce java komut dosyası istemci tarafı kodlama dilidir, jsp sunucu tarafı dili erişemezsiniz, sunucu tarafındaki herhangi bir istemci tarafı dil değişkenini sunucuya istek göndermeden sunucuya istek göndermeden yalnızca sunucuya istek gönderdikten sonra istemci tarafına erişebilirsiniz. böylece istek yoluyla

başka bir şey gitmek için tek yol vardır dil değişkenleri iki seçenek ... gizli alanını Veya kullanıcı window.location nesne kullanmak Ya orada "Nasıl sunucuya bu değişken göndermek için" olmasıdır js ......

`window.location.replace("home.jsp?nm="+v);` 
`<%String name=request.getParameter("nm");%>` 

window.location.href("home.jsp?nm="+v); 
<%String name=request.getParameter("v");%> 

o zaman ben örnek şimdi çalışıyor bunu yapacak umut

+1

OP, JSP (sunucu tarafı) değişkenini JS'den okumak ister, başka bir şekilde değil. – Suma