Чтение переменной JSP из JavaScript


Как я могу прочитать / получить доступ к переменной JSP из JavaScript?

5 51

5 ответов:

alert("${variable}");

или

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

или полный пример

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

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

</script> 
</head> 

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

</html>

Примечание: санируйте вход перед его рендерингом, он может открыть множество возможностей XSS

самый чистый способ, насколько я знаю:

  1. добавьте переменную JSP в данные элемента HTML - * attribute
  2. затем прочитайте это значение через Javascript, когда это необходимо

мое мнение относительно текущих решений на этой странице SO: чтение "непосредственно" значений JSP с использованием Java scriplet внутри фактического кода javascript, вероятно, самая отвратительная вещь, которую вы могли бы сделать. Меня тошнит от этого. хаха. Серьезно, постарайся этого не делать.

HTML часть без JSP:

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

HTML часть при использовании JSP:

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

часть javascript (используя jQuery для простоты):

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

и вот jsFiddle, чтобы увидеть это в действии http://jsfiddle.net/6wEYw/2/

ресурсы:

предполагая, что вы говорите о JavaScript в HTML-документе.

вы не можете сделать это напрямую, так как, насколько это касается JSP, он выводит текст, а что касается страницы, он просто получает HTML-документ.

вы должны создать код JavaScript для создания экземпляра переменной,заботясь, чтобы избежать каких-либо символов со специальным значением в JS. Если вы просто сбросите данные (как предложено некоторыми другими ответами), вы найдете его падение, когда данные содержат новые строки, символы кавычек и так далее.

самый простой способ сделать это-использовать библиотеку JSON (есть куча, перечисленная в нижней части http://json.org/ ), а затем имеют выход JSP:

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

это даст вам объект, который вы можете открыть как:

myObject.someProperty

в JS.

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

прежде всего Java script-это язык сценариев на стороне клиента, а jsp-это язык на стороне сервера, к которому вы не можете получить доступ, обрабатывайте любую переменную языка на стороне клиента на стороне сервера без отправки запроса на сервер только после получения запроса на сервере вы можете получить доступ к переменным языка на стороне клиента так что есть только способ пройти через запрос

другое дело, что "как отправить эти переменные на сервер" есть два варианта... Либо использовать скрытое поле Или пользователь окно.расположение объекта 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");%>

тогда вы можете получить доступ к данным на стороне клиента в jsp