мое состояние if (! (S.equals ("Hello"))) не выполняется
Это потому что это:
String s=(String)("<script>document.writeln(jsvar)</script>").toString();
out.println(s.equals("Hello"));
... почти так же, как писать:
out.println("this".equals("that"));
Это всегда будет ложью.
Теперь я пытаюсь установить выбранное значение в качестве переменной сеанса.
Чтобы установить переменную в сеансе, вам нужно отправить форму на сервер (игнорируя методы AJAX и т. Д.). Как я уже упоминал здесь , для использования multipart/form-data
требуется анализатор MIME - в приведенной ниже форме используется значение по умолчанию enctype
.
Эта форма, когда вы выбираете опцию из выпадающего списка, отправляет форму на сервер. Каждый раз, когда JSP запускается, он использует тесты скриптлета <% ... %>
, чтобы проверить, был ли опубликован параметр "harish". Если это так, он помещает его в сеанс. Выражение <%= ... %>
используется для отображения текущего значения сеанса.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- header removed for clarity -->
<body>
<form id="test" name="test" action="test.jsp" method="post"><select
name="harish" onchange="document.getElementById('test').submit();">
<option value="select">select an option</option>
<option value="1">1</option>
<option value="2">2</option>
</select></form>
<%
//see if a parameter was sent from page; "harish"==name attr on select
String value = request.getParameter("harish");
if (value != null) {
//store it in session
session.setAttribute("test", value);
}
%>
<%="harish=" + session.getAttribute("test")%>
</body>
</html>
Предполагается, что приведенная выше страница test.jsp
- что страница отправляется обратно самой себе. Если нет, вам нужно переместить скриптлет и выражение в test.jsp
.