【发布时间】:2010-12-10 19:56:52
【问题描述】:
我有两个页面(page1.jsp 和 page2.jsp)。在 page1.jsp 中,我从数据库中检索一些值并显示与这些值对应的超链接。现在我想要的是,当我单击任何这些超链接时,在 page2.jsp 中,我应该显示与数据库中的 vlaue 对应的其他字段。所以我本质上想要的是当一个链接被点击时,关联的值必须传递给 page2.jsp,在那里我查询数据库以检索其他字段。
【问题讨论】:
标签: javascript jsp
我有两个页面(page1.jsp 和 page2.jsp)。在 page1.jsp 中,我从数据库中检索一些值并显示与这些值对应的超链接。现在我想要的是,当我单击任何这些超链接时,在 page2.jsp 中,我应该显示与数据库中的 vlaue 对应的其他字段。所以我本质上想要的是当一个链接被点击时,关联的值必须传递给 page2.jsp,在那里我查询数据库以检索其他字段。
【问题讨论】:
标签: javascript jsp
当一个链接被点击时,关联的值必须被传递给 page2.jsp,在那里我查询数据库以检索其他字段
那么,您想在显示 JSP 之前预处理 HTTP 请求吗?为此,您需要一个 servlet。
假设page1.jsp中的链接显示如下:
<ul>
<c:forEach items="${ids}" var="id">
<li><a href="page2?id=${id}">View data for ID ${id}</a></li>
</c:forEach>
</ul>
然后,您将能够在 HttpServlet 的 doGet() 方法中预处理 HTTP 请求,该方法正在侦听 /page2 的 <url-pattern>:
Long id = Long.valueOf(request.getParameter("id"));
Data data = dataDAO.find(id);
request.setAttribute("data", data); // Will be available as ${data} in JSP.
request.getRequestDispatcher("/WEB-INF/page2.jsp").forward(request, response);
在page2.jsp 中,您将能够访问data,如下所示:
<p>The data for ID ${param.id} is:</p>
<p>Field 1: ${data.field1}</p>
<p>Field 2: ${data.field2}</p>
【讨论】:
您可以通过将 GET 或 POST 变量传递到相应的 jsp 页面并使用 jsp 读取它们来做到这一点:
使用 GET 方法:
<a href="page2.jsp?datatobesend=value">link</a>
如果您想动态执行此操作,则必须使用 javascript 在点击时添加:
使用 jQuery js 库获取:
<script>
$(document).ready(function(){
$('#mylink').click(function(){
$(this).attr('href', $(this).attr('href')+'?datatobesend=value');
});
});
</script>
<a href="page2.jsp" id="mylink">link</a>
有很多方法可以使用 GET/POST 将数据从一个页面发送到另一个页面,这就像我可以写一个一样快 :-) 如果这种方式没有,你应该考虑使用表单提交的另一个地方'不适合你。
【讨论】:
l如果您正在谈论的变量不能序列化为字符串并作为http参数传递,如建议的那样,那么您需要将变量存储在会话中。
--page1.asp
<?
session.setAttribute( "val", record );
?>
--page2.asp
<?
//Cast this to your type
Object record = session.getAttribute("val");
// Clean it up now that you're done
session.removeAttribute( "val" )
?>
【讨论】: