user3239558
user3239558

Reputation: 1827

jsp: how to get value from session?

I get an String array from session and I want to show the String from the array.

I know javascript can't get data from session directly. Is there any method I can get the data from session and transfer it to javascrip?

My code as follows:

<%@ 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">

<%String[] sele = (String[])session.getAttribute("selections");%>;

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Expires" content="0">
<meta http-equiv="kiben" content="no-cache">
<title>Check List</title>
<script language="javascript"  type="text/JavaScript"  src="cookie.js">
</script>
<script text="text/javascript">
    {
        var selections = //String array form session
        for(var v=0;v<selections.length;v++){
            fillForm(selections[v]);
        }           
    }

        function fillForm(name){
            var checkbox= document.createElement("input");
            checkbox.type="checkbox";
            checkbox.name=name;
            checkbox.value=name;
            checkbox.id=name;

            var label = document.createElement("label");
            label.htmlFor="id";
            label.appendChild(document.createTextNode(name));

            var container = document.getElementById("checklist");
            container.appendChild(checkbox);
            container.appendChild(label);
            container.appendChild(document.createElement("br"));


        }

          function submitAction(){
              addUserName(document.getElementById("checklist"));
              var elem = document.getElementById("checklist").elements;           
              for(i =0;i<elem.length;i++){
                 elem[i].checked = true;                  
              }
              var form = document.getElementById("checklist");
              form.submit();
          }

</script>
</head>
<body>
    <form id="checklist" action="selection">
    </form>
    <Button type="button" onclick="submitAction()" name="submit">Submit</button>

</body>
</html>

Upvotes: 0

Views: 1801

Answers (1)

Braj
Braj

Reputation: 46841

Simply use JSP Expression Language and JSP JSTL

<script>
      alert("value:  ${selections}");
</script>

Here selections is an attribute that is set in any scope page, request, session or application.

You can directly access an attribute form session scope:

{sessionScope.selections}

Note: I don't know that Java ArrayList does work in JavaScript as well. If it doesn't work then simply set a comma separated string as session attribute and split it in JavaScript as shown below.

Sample code:

<script>
    var selections = "${sessionScope.csv}".split(",");
    for ( var v = 0; v < selections.length; v++) {
        alert(selections[v]);
    }
</script>

Here csv is a comma separated string value that is set in session scope.


Use JSP JSTL and EL instead of Scriplet that is more easy to use and less error prone.

You can achieve it in JSTL without using JavaScript. Simply iterate the list using <c:forEach> tag and add that much of check boxes and labels.

Sample code:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
...
<body>
...
    <c:forEach items="${selections }" var="name">
        <input type="checkbox" name="${name}" value="${name}" id="${name}">
        ...
    </c:forEach>
</body>

Upvotes: 2

Related Questions