为什么复选框中的字符串值在 Java 中的长度增加了 +1



我正在用 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元素的值。

最新更新