如何将Object从一个JSP传递给其他JSP?

时间:2016-03-11 09:28:24

标签: javascript java jsp

我有两个jsp文件,jsp1和jsp2。当单击jsp1上的编辑按钮时,将调用java脚本函数。从javascript函数我调用jsp2。我使用window.open因为我需要这个jsp2作为弹出窗口打开。现在,当我点击编辑按钮时,我想将一个对象从jsp1传递给jsp2。我怎么能这样做?。

    This is my code

    jsp1

    < script language="JavaScript">

            function edit(){

                    window.open("jsp2.jsp",'popuppage',"height=600,width=800,status=yes,toolbar=no,menubar=no,location=no");
                    return true;

                }
    < /script>

     < stripes:form name="upload"
                        action="/upload.action" enctype="multipart/form-data">
          < table>

         <% List<TableDto> list = (List<TableDto>)request.getAttribute("table"); %>

                            <%
                                if(list != null){
                                 for (TableDto dto : list) { 
                            %>
                      < tr>
                                <td><%=dto.getName()%></td>
                                <td><img src="<%=dto.getPath() %>" width="40px"
                                    height="40px" /></td>
                                <td><%=dto.getText()%></td>
                                <td>


                                <input type="image" name="edit"onclick="edit()"
                                    src="${globalPath}/images/edit_pen.jpg">

                    < /tr>

                            <%
                                } 
                                }
                            %>

          </table>
    < /stripes:form>

6 个答案:

答案 0 :(得分:2)

你需要使用

  • 如果从一个页面到另一个页面使用forward(jsp:foprward或RequestDispatcher),则使用 request.setAttribute(..)和request.getAttribute(),因为您在同一个请求中

  • 如果您正在使用重定向(通过response.sendRedirect()),则使用 request.getSession()。setAttribute(..)和request.getSession()。getAttribute()。

答案 1 :(得分:0)

您可以在可以存储在会话中的属性中设置对象,而在另一个jsp中,您可以从会话中检索并使用。

答案 2 :(得分:0)

以下是将值从一个页面传递到另一个页面的方法 -

  1. 将值放入会话对象。
  2. 将值放入应用程序对象
  3. 将值放在重定向网址的末尾。

答案 3 :(得分:0)

1.使用url参数
您可以添加网址参数,例如“jsp2?xxx = xxx&amp; xxx = xxx”。然后在控制器(jsp2)中,您可以通过

获取这些参数
request.getParameter("xx")

并将变量传递给jsp引擎。

2.使用cookies
您可以编写js代码以将数据保存在cookie中,然后在jsp2中读取数据

///write cookies
document.cookie="xx="+xx;
///read cookies
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return null;
}

3.使用会话
在controller1(jsp1)中,按

保存会话
request.getSession().setAttribute(name, value);

在jsp2中,通过

读取会话
request.getSession().getAttribute(name);

答案 4 :(得分:0)

您可以使用参数值 会话到价值观 饼干值 并且您可以使用bean对象来操作变量和对象

答案 5 :(得分:0)

以下示例适合我。第一页包含处理函数:

function popup() {
    window.data = {name : 'myName'};
    var handle = window.open('importJSON.html', 'popup',"height=600,width=400,status=yes,toolbar=no,menubar=no,location=no");
}

第二页包含处理函数:

function showName2() {
    alert(window.opener ? window.opener.data.name : undefined);
}

在Chromium 47和Firefox 43上测试过。它不会抛出异常'阻止原始帧“null”...如果两个页面都打开,协议,域和端口必须匹配'同一个主人。如果有可能不这样做,我最好不要通过网络来回发送数据对象。