Может ли кто-нибудь сказать мне, как передать значения JavaScript в Scriptlet в JSP?
Как передать значения JavaScript в Scriptlet в JSP?
Ответы (8)
Ваши значения javascript находятся на стороне клиента, ваш скриптлет работает на стороне сервера. Поэтому, если вы хотите использовать свои переменные javascript в скриптлете, вам нужно будет их отправить.
Для этого либо сохраните их в полях ввода и отправьте форму, либо выполните запрос ajax. Я предлагаю вам изучить JQuery для этого.
Я могу предоставить два способа,
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);
%>
<script>document.writeln(v)</script>
- person Jeevanantham; 03.09.2014
просто, нельзя!
JSP - на стороне сервера, javascript - на стороне клиента, что означает, что во время оценки javascript больше нет "кода jsp".
Я интерпретировал этот вопрос как:
"Кто-нибудь может сказать мне, как передавать значения для JavaScript для использования в JSP?"
Если это так, этот HTML-файл передаст вычисляемую сервером переменную в JavaScript в JSP.
<html>
<body>
<script type="text/javascript">
var serverInfo = "<%=getServletContext().getServerInfo()%>";
alert("Server information " + serverInfo);
</script>
</body>
</html>
Вы не можете сделать это, но вы можете сделать наоборот:
В вашем JSP вы можете:
String name = "John Allepe";
request.setAttribute("CustomerName", name);
Доступ к переменной в js:
var name = "<%= request.getAttribute("CustomerName") %>";
alert(name);
Если вы говорите, что хотите передать значение javascript из одного jsp в другой в javascript, тогда используйте технику URLRewriting, чтобы передать переменную javascript в следующий файл jsp и получить доступ к этому в следующем jsp в объекте запроса.
Иначе вы не можете этого сделать.
Это невозможно, как вы ожидаете. Но вы можете сделать что-то вроде этого. Передайте значение вашего java-скрипта сервлету/контроллеру, выполните обработку, а затем передайте это значение на страницу jsp, поместив его в какой-либо объект по вашему требованию. Затем вы можете использовать это значение по своему усмотрению.
Это для других людей, приземляющихся здесь. Прежде всего, вам нужен сервлет. Я использовал запрос @POST. Теперь в вашем файле jsp у вас есть два способа сделать это:
Сложный способ с 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); %>; } }); }); });
Простой способ только с 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 (пока я не придумал другого способа его загрузки).