我有两个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>
答案 0 :(得分:2)
你需要使用
如果从一个页面到另一个页面使用forward(jsp:foprward或RequestDispatcher),则使用 request.setAttribute(..)和request.getAttribute(),因为您在同一个请求中强>
如果您正在使用重定向(通过response.sendRedirect()),则使用 request.getSession()。setAttribute(..)和request.getSession()。getAttribute()。
答案 1 :(得分:0)
您可以在可以存储在会话中的属性中设置对象,而在另一个jsp中,您可以从会话中检索并使用。
答案 2 :(得分:0)
以下是将值从一个页面传递到另一个页面的方法 -
答案 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”...如果两个页面都打开,协议,域和端口必须匹配'同一个主人。如果有可能不这样做,我最好不要通过网络来回发送数据对象。