Java 动态下拉列表从jsp返回空值
我写了一个由数据库填充的下拉列表。这是我在JSP文件中的下拉代码Java 动态下拉列表从jsp返回空值,java,mysql,jsp,servlets,jakarta-ee,Java,Mysql,Jsp,Servlets,Jakarta Ee,我写了一个由数据库填充的下拉列表。这是我在JSP文件中的下拉代码 <td>Category:</td> <% try { dbConnect dbConnect = new dbConnect(); Connection currentCon = dbConnect.Connect(); System.out.println("Connection sucess"); String sql = "SELECT
<td>Category:</td>
<%
try {
dbConnect dbConnect = new dbConnect();
Connection currentCon = dbConnect.Connect();
System.out.println("Connection sucess");
String sql = "SELECT * FROM categories";
PreparedStatement ps = currentCon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();%>
<td><select name="category" class="form-control" required>
<%
while (rs.next()) {
String cname = rs.getString("category_name");
String id = rs.getString("category_id");
System.out.println(id);
%>
<option value="<%= id%>"><%= cname%></option>
<%
}
%>
</select>
<%
} catch (SQLException sqe) {
out.println(sqe);
}
%>
</td>
在JSP下拉列表的最下面,它打印类别中的所有ID。但对于servlet,它返回一个null。如何解决此问题?局部变量应该在while循环之外,因为在while循环之后需要该值
<%
try {
dbConnect dbConnect = new dbConnect();
Connection currentCon = dbConnect.Connect();
System.out.println("Connection sucess");
String sql = "SELECT * FROM categories";
PreparedStatement ps = currentCon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();%>
String cname = null;
String id = null;
<td><select name="category" class="form-control" required>
<%
while (rs.next()) {
cname = rs.getString("category_name");
id = rs.getString("category_id");
System.out.println(id);
%>
字符串cname=null;
字符串id=null;
此外,我建议您使用表达式语言而不是
改变
到
${name}
不要忘记提交按钮。局部变量应该在while循环之外,因为在while循环之后需要该值
<%
try {
dbConnect dbConnect = new dbConnect();
Connection currentCon = dbConnect.Connect();
System.out.println("Connection sucess");
String sql = "SELECT * FROM categories";
PreparedStatement ps = currentCon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();%>
String cname = null;
String id = null;
<td><select name="category" class="form-control" required>
<%
while (rs.next()) {
cname = rs.getString("category_name");
id = rs.getString("category_id");
System.out.println(id);
%>
字符串cname=null;
字符串id=null;
此外,我建议您使用表达式语言而不是
改变
到
${name}
不要忘记提交按钮。我在代码中没有找到任何标记
也没有提交
按钮,请尝试以下代码:
<td>Category:</td>
<form method="post" action="yourservleturl">//form tag for submitting data
<%
try {
dbConnect dbConnect = new dbConnect();
Connection currentCon = dbConnect.Connect();
System.out.println("Connection sucess");
String sql = "SELECT * FROM categories";
PreparedStatement ps = currentCon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();%>
<td><select name="category" class="form-control" required>
<%
while (rs.next()) {
%>
<option value="<%=rs.getString("category_id")%>"><%=rs.getString("category_name")%></option> // printing option values
<%
}
%>
</select>
<%
} catch (SQLException sqe) {
out.println(sqe);
}
%>
<input type="submit" value="submit">///submit btn
</form>
</td>
类别:
//用于提交数据的表单标记
//打印选项值
///提交btn
还可以通过String id=request.getParameter(“category”)获取下拉值代码>。它应该可以工作。我在代码中没有找到任何标记
也没有提交
按钮,请尝试以下代码:
<td>Category:</td>
<form method="post" action="yourservleturl">//form tag for submitting data
<%
try {
dbConnect dbConnect = new dbConnect();
Connection currentCon = dbConnect.Connect();
System.out.println("Connection sucess");
String sql = "SELECT * FROM categories";
PreparedStatement ps = currentCon.prepareStatement(sql);
ResultSet rs = ps.executeQuery();%>
<td><select name="category" class="form-control" required>
<%
while (rs.next()) {
%>
<option value="<%=rs.getString("category_id")%>"><%=rs.getString("category_name")%></option> // printing option values
<%
}
%>
</select>
<%
} catch (SQLException sqe) {
out.println(sqe);
}
%>
<input type="submit" value="submit">///submit btn
</form>
</td>
类别:
//用于提交数据的表单标记
//打印选项值
///提交btn
还可以通过String id=request.getParameter(“category”)获取下拉值代码>。它应该可以工作。看起来id和cname超出了的范围。可以尝试在父作用域中声明它们吗?仍然相同。id和cname似乎不在的作用域中。您可以尝试在父作用域中声明它们吗?仍然相同。仍然返回nullvalue@NethminiRomina,是否可以获取数据库中包含类别的下拉框?仍然返回空值value@NethminiRomina,您可以在数据库中获取包含类别的下拉框吗?