有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaJSP:如何从会话中获取价值?

我从会话中获得一个字符串数组,我想显示数组中的字符串

我知道javascript不能直接从会话获取数据。是否有任何方法可以从会话中获取数据并将其传输到javascrip

我的代码如下:

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

共 (1) 个答案

  1. # 1 楼答案

    只需使用JSP Expression LanguageJSP JSTL

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

    这里selections是在任何作用域页面、请求、会话或应用程序中设置的属性

    您可以直接访问属性表单会话范围:

    {sessionScope.selections}
    

    注意:我不知道Java ArrayList在JavaScript中也能工作。如果不起作用,只需将逗号分隔的字符串设置为会话属性,并在JavaScript中拆分它,如下所示

    示例代码:

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

    这里csv是一个逗号分隔的字符串值,在会话范围内设置


    使用JSP JSTL和EL,而不是更易于使用且不易出错的Scriplet

    您可以在JSTL中实现它,而无需使用JavaScript。只需使用<c:forEach>标记迭代列表,并添加大量复选框和标签

    示例代码:

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