我有2个JSP页面如下:
projectcategory.jsp
<%
Connection con = DbConnect.connect();
Statement s = con.createStatement();
ResultSet rs = s.executeQuery("select * from projectcategory");
%>
<DIV class="TabbedPanelsContent" align="center">
<TABLE border="1">
<TR>
<TH>CATEGORY ID</TH>
<TH>CATEGORY NAME</TH>
<TH>Edit/Update</TH>
</TR>
<%
while (rs.next()) {
%>
<%String p=rs.getString(1);%>
<TR>
<TD><%=rs.getString(1)%></TD>
<TD><%=rs.getString(2)%></TD>
<TD>
<FORM action="EditPcat.jsp?pcatid=p"><INPUT type="submit"
value='edit/update'></INPUT>
</FORM>
</TD>
</TR>
<%
}
%>
</TABLE>
</DIV>
另一个是Editpcat.jsp:
</head>
<body>
<%String s=request.getParameter("p"); %>
<form action="ProjCatServlet" method="post">
<div align="right"><a href="projectcategory.jsp">view</a></div>
<fieldset>
<legend>Edit category</legend>
<table cellspacing="2" cellpadding="2" border="0">
<tr>
<td align="left">Category Id</td>
<td><input type="text" name="pcatid" value="<%=s%>" ></td>
</tr>
<tr>
<td align="right">Category Name</td>
<td><input type="text" name="pcatname"></td>
</tr>
<tr>
<td><input type="submit" value="submit"></td>
</tr>
</table>
<input type="hidden" name="FUNCTION_ID" value="UPDATE">
</fieldset>
</form>
如何从我们从数据库获取的一个JSP页面显示另一个JSP的文本框中的值?
答案 0 :(得分:2)
您将其作为请求参数传递,名称为pcatid
:
<FORM action="EditPcat.jsp?pcatid=p">
但您尝试将其作为名为p
的请求参数获取:
<%String s=request.getParameter("p"); %>
将名字对齐。
那就是说,你用servlets
标记了这个问题,但你根本就没有使用servlet。这段代码老实说是一场灾难。 Scriptlets 是一种糟糕的做法,而JDBC代码正在泄漏资源。原始Java代码属于Java类,而不属于JSP文件。使用像JSTL这样的taglib来控制页面流并使用EL(表达式语言)来访问后端数据。通过those tutorials来做正确的事。
开球示例:
public void doGet(HttpServletRequest request, HttpServletResponse response) {
List<Project> projects = projectDAO.list();
request.setAttribute("projects", projects);
request.getRequestDispatcher("projects.jsp").forward(request, response);
}
和
<table>
<c:forEach items="${projects}" var="project">
<tr>
<td>${project.id}</td>
<td>${project.name}</td>
</tr>
</c:forEach>
</table>
答案 1 :(得分:0)
这非常脏,但您可以在表单中添加隐藏的INPUT标记:
<INPUT type="hidden" name="p1" value="<%=rs.getString(1)%>">
<INPUT type="hidden" name="p2" value="<%=rs.getString(2)%>">
BTW:你应该在不再需要时关闭你的声明,否则你可能会在服务器上使用过多的资源。