为什么来自Checkboxes的字符串值在java中增加了+1?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么来自Checkboxes的字符串值在java中增加了+1?相关的知识,希望对你有一定的参考价值。

我正在JSP / Servlet中开发一个Web应用程序,我在其中从复选框中获取值并将其放在会话中。之后,我将在数据库中逐个添加此复选框值以及更多属性。

问题是从复选框中获取值后,字符串的长度会增加,如堆栈跟踪中所示。例如,如果String值为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;

This is what the error is, you can see that while printing query it is showing after the title.

Value abc is present in database also.

答案

出于某种原因,你有' ''s+'附加标题中的项目。

更好地调试代码(添加一个sysout)并检查您在以下代码段中实际获得了什么

case 1:
String[] checkbox = request.getParameterValues("c1");   
if (checkbox != null) 
{
  System.out.println(checkbox);
  session.setAttribute("title", checkbox);           
} 
break;

c1是jsp上输入元素(复选框)的名称。这也应该在整个页面中是唯一的。

如果你在这里使用javascript更好用js来计算dom元素的值。

以上是关于为什么来自Checkboxes的字符串值在java中增加了+1?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 来自 AlertDialog 的字符串值在访问时不断重置

PLSQL:来自 xpath 的值在前面有一些字符

CLOB值在java端变成空

来自 SQL 查询的多维数组

通过 user32.dll 在 Listbox 中选择 CheckBoxes? (

Visual Studio安装项目中的“Checkboxes(A)”和“Checkboxes(B)”对话框之间有什么区别?