Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

  • добавьте переменную JSP в атрибут data-* HTML-элемента
  • затем прочитайте это значение с помощью Javascript при необходимости

Мое мнение относительно текущих решений на этой странице SO: чтение "непосредственно" значений JSP с использованием java-скрипта внутри фактического кода 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/

Ресурсы

Ответ 3

Предполагая, что вы говорите об 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.

Ответ 4

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

Ответ 5

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

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