我正在用 JSP/Servlet 开发一个 Web 应用程序,其中我从复选框中获取值并将其放在会话中。之后,我将在数据库中一个接一个地添加此复选框值,并具有更多属性。
问题是从复选框中获取值后,字符串的长度会增加,如您在堆栈跟踪中看到的那样。例如,如果字符串值为 abc,则其长度显示为 5。
如果我在这里做错了什么,请帮助我。
case 1:
String[] checkbox = request.getParameterValues("c1");
if (checkbox != null)
{
session.setAttribute("title", checkbox);
}
break;
case 2:
String[] titles = (String[]) session.getAttribute("title");
for (String title : titles)
{
System.out.println(title + title.length());
}
int i = 0;
String Name = session.getAttribute("Name").toString();
String[] days = request.getParameterValues("t1");
if (titles != null && days != null)
{
for (String title : titles)
{
System.out.print(title);
System.out.print(title.length());
int day = Integer.parseInt(days[i]);
i++;
String query = "insert into rents values('" + day + "','" + Name + "','" + title + "')";
System.out.print(query);
cr.stmt.executeUpdate(query);
}
}
cr.stmt.close();
cr.con.close();
break;
这就是错误所在,您可以看到在打印查询时,它在标题后显示。
值 abc 也存在于数据库中。
出于某种原因,您在标题中附加了'n'
和's+'
。
更好地调试代码(添加系统输出(并检查您在以下代码段中实际得到的内容
case 1:
String[] checkbox = request.getParameterValues("c1");
if (checkbox != null)
{
System.out.println(checkbox);
session.setAttribute("title", checkbox);
}
break;
c1
是 JSP 上输入元素(复选框(的名称。此外,这在整个页面中应该是唯一的。
如果你在这个中使用javascript,最好使用js来计算dom元素的值。