Как передать значения JavaScript в Scriptlet в JSP?

Может ли кто-нибудь сказать мне, как передать значения JavaScript в Scriptlet в JSP?


person user601367    schedule 18.04.2011    source источник
comment
Можете ли вы предоставить более точную информацию о ваших требованиях? Например, чего вы планируете достичь ... например, какой-то псевдокод или что-то в этом роде?   -  person Mahendra Liya    schedule 18.04.2011


Ответы (8)


Ваши значения javascript находятся на стороне клиента, ваш скриптлет работает на стороне сервера. Поэтому, если вы хотите использовать свои переменные javascript в скриптлете, вам нужно будет их отправить.

Для этого либо сохраните их в полях ввода и отправьте форму, либо выполните запрос ajax. Я предлагаю вам изучить JQuery для этого.

person Joeri Hendrickx    schedule 18.04.2011

Я могу предоставить два способа,

a.jsp,

<html>
    <script language="javascript" type="text/javascript">
        function call(){
            var name = "xyz";
            window.location.replace("a.jsp?name="+name);
        }
    </script>
    <input type="button" value="Get" onclick='call()'>
    <%
        String name=request.getParameter("name");
        if(name!=null){
            out.println(name);
        }
    %>
</html>

b.jsp,

<script>
    var v="xyz";
</script>
<% 
    String st="<script>document.writeln(v)</script>";
    out.println("value="+st); 
%>
person harishtps    schedule 18.04.2011
comment
Предложение b.jsp не работает, оно печатает <script>document.writeln(v)</script> - person Jeevanantham; 03.09.2014
comment
Да b.jsp не работает. может ли кто-нибудь помочь мне заставить его работать - person Abhijit Kurane; 13.02.2015

просто, нельзя!

JSP - на стороне сервера, javascript - на стороне клиента, что означает, что во время оценки javascript больше нет "кода jsp".

person Stijn Geukens    schedule 18.04.2011

Я интерпретировал этот вопрос как:

"Кто-нибудь может сказать мне, как передавать значения для JavaScript для использования в JSP?"

Если это так, этот HTML-файл передаст вычисляемую сервером переменную в JavaScript в JSP.

<html>
    <body>
        <script type="text/javascript">
            var serverInfo = "<%=getServletContext().getServerInfo()%>";
            alert("Server information " + serverInfo);
        </script>
    </body>
</html>
person Jim Blackler    schedule 18.04.2011
comment
может быть, вы не прочитали вопрос должным образом, он хочет передать значение javascript в тег скрипта, а не значение внутри скрипта в javascript :) - person Mahendra Liya; 18.04.2011

Вы не можете сделать это, но вы можете сделать наоборот:

В вашем JSP вы можете:

String name = "John Allepe";    
request.setAttribute("CustomerName", name);

Доступ к переменной в js:

var name = "<%= request.getAttribute("CustomerName") %>";
alert(name);
person Vineela Thonupunuri    schedule 16.03.2017

Если вы говорите, что хотите передать значение javascript из одного jsp в другой в javascript, тогда используйте технику URLRewriting, чтобы передать переменную javascript в следующий файл jsp и получить доступ к этому в следующем jsp в объекте запроса.

Иначе вы не можете этого сделать.

person Harry Joy    schedule 18.04.2011

Это невозможно, как вы ожидаете. Но вы можете сделать что-то вроде этого. Передайте значение вашего java-скрипта сервлету/контроллеру, выполните обработку, а затем передайте это значение на страницу jsp, поместив его в какой-либо объект по вашему требованию. Затем вы можете использовать это значение по своему усмотрению.

person Mukesh Singh Rathaur    schedule 18.04.2011

Это для других людей, приземляющихся здесь. Прежде всего, вам нужен сервлет. Я использовал запрос @POST. Теперь в вашем файле jsp у вас есть два способа сделать это:

  1. Сложный способ с AJAX, если вы новичок в jsp: вам нужно сделать сообщение с javascript var, который вы хотите использовать в своем классе java, и использовать JSP для вызова вашей java-функции внутри вашего запроса:

    $(document).ready(function() {
        var sendVar = "hello";
        $('#domId').click(function (e)
        {                               
            $.ajax({
                type: "post",
                url: "/", //or whatever your url is
                data: "var=" + sendVar ,
                success: function(){      
                        console.log("success: " + sendVar );                            
                      <% 
                          String received= request.getParameter("var");
    
                          if(received == null || received.isEmpty()){
                              received = "some default value";
                          }
                          MyJavaClass.processJSvar(received); 
                      %>;                            
    
                }
            });
        });
    
    });
    
  2. Простой способ только с JSP:

    <form id="myform" method="post" action="http://localhost:port/index.jsp">
         <input type="hidden" name="inputName" value=""/>
                   <% 
                          String pg = request.getParameter("inputName");
    
                          if(pg == null || pg.isEmpty()){
                              pg = "some default value";
                          }
                          DatasyncMain.changeToPage(pg); 
                      %>;     
    </form>
    

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

person JediCate    schedule 14.09.2018