如何使用 request.setAttribute() 通过单击链接来设置和传递值

新手上路,请多包涵

我想在用户单击链接时使用 request.setAttribute() 和 request.getAttribute() 将 rowNo 的值从一个 jsp 文件传递到另一个 jsp 文件(以在该行上显示图像)。

但是当我尝试在第二个 jsp 页面上使用 request.getAttribute() 时,它给出了以下异常:org.apache.jasper.JasperException: java.lang.NumberFormatException: null

在 Index.jsp 页面上我有:

 <%!
 int temp = 1;

 %>

<a href="single.jsp" onclick="<%= request.setAttribute("val", temp) %>" >
<i class="glyphicon glyphicon-menu-right icon"></i> </a>

在 single.jsp 页面上:

 <%

dbConnect con = new dbConnect();
ResultSet r = con.getConnection().executeQuery("select * from tblpic ");

String tp = (String) (request.getAttribute("val"));

int i = Integer.parseInt(tp);

r.absolute(i);

%>

<div class="thumb-image"> <img src="<%= r.getString(2) %>" data-imagezoom="true" class="img-responsive"> </div>

r.absolute(i) 用于移动到表中的特定行。

我已经在两个jsp页面上添加了这个文件(我不知道是否有必要) <%@page import = “javax.servlet.http.HttpServletRequest”%>

我正在研究 net beans 和 struts 框架。

原文由 Kashiii 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 539
2 个回答

您将服务器端代码和客户端代码混合在一起。 “request”是一个 java 对象和 servelet 请求处理的一部分。它仅在服务器端工作,同时在 servlet 容器中呈现 jsp。

“onclick”是在浏览器端运行的 java 脚本点击触发器。

一旦页面显示“请求”,记录器将无效。并单击提交新请求..将创建新的请求对象。

对于您来说,可以轻松地将参数参数传递给 jsp,如下所示。

在第一个 jsp 上:

<a href="single.jsp?val=temp" >

在第二个 jsp 上:

<%=request.getParameter("val")%>

原文由 Piyush Aghera 发布,翻译遵循 CC BY-SA 3.0 许可协议

您正在请求范围内设置值。请求范围属性只能在同一请求中访问。每当最终用户单击链接(由 提供)时,都会生成一个新请求,因此您会丢失在上一个请求中设置的属性。

解决你可以做的问题

  1. Piyush Aghera 解释的 URL 转发

2)您可以按照 PVR 的解释将值存储在会话中

  1. 如果您更喜欢只将值存储在请求属性中,那么我建议您使用 RequestDispatcher 来转发您的请求。这将起作用,因为您在下一页上的请求将保持不变。

原文由 BeginnersSake 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题