gpt4 book ai didi

java - 在 servlet 中使用数组中的多个参数

转载 作者:行者123 更新时间:2023-12-02 08:18:07 25 4
gpt4 key购买 nike

这是我的 .jsp 页面中的 HTML:

<tr>
<td><input type="checkbox" name=<%=editID%>COM /> </td>
<td>blah blah</td>
<td>blah blah</td>
</tr>

因此,用户在这里将选中复选框并提交将其删除。但我希望他们能够选择多个复选框。例如,如果他们选择了两个复选框,例如 # 的 5 和 6,那么它将作为 5COM 和 6COM 到达 servlet(这是由于糟糕的表设计)。接下来,我尝试从 jsp 页面获取多个参数,并将它们写入 servlet 中的数据库。这是我的定义:

  String[] comEdit = request.getParameterValues("editIDCom");   
String comEditDel = "";
int[] comEditDels = null;

因此,使用上面的示例,comEdit 数组应包含 5COM 和 6COM...接下来,我尝试获取数组“comEdit”中每个项目的子字符串,然后尝试将其放入 int 中数组:

  for (int i = 0; i < comEdit.length; ++i) {
String com = comEdit[i];
comEditDel = com.substring(0, com.length() - 3);
comEditDels = new int[comEditDel == null ? 0: comEditDel.length];
comEditDels[i] = Integer.parseInt(comEditDel[i]);
}

所以坚持使用相同的例子,我试图创建一个新的 int 数组,它会给我 [5, 6]....现在上面的部分很可能是不正确的,但我试了一下,你可以看出我的意图。在这里,我尝试在可调用语句中使用该数组:

    CallableStatement stmt = null;
PreparedStatement pstmt = null;
Connection conn = null;
ArrayDescriptor ad = null;
String dSource = getServletContext().getInitParameter("dataSource");

stmt = conn.prepareCall("{?= call My_function(?)}");
stmt.registerOutParameter(1, Types.INTEGER);
ad = ArrayDescriptor.createDescriptor("NUM_ARRAY", conn);
stmt.setArray(2,new ARRAY(ad, conn, comeditDels));

同样,使用该示例,stmt.setArray 函数应将数组 [5,6] 发送到 My_function。这又是我的尝试,可能不正确?任何帮助表示赞赏。谢谢!

最佳答案

根据您对我的评论的回复,这是否符合您的要求?

String[] comEdit = request.getParameterValues("editIDCom");   
int[] comEditDels = null;

if (comEdit != null) {
comEditDels = new int[comEdit.length];

for (int i = 0; i < comEdit.length; ++i) {
String com = comEdit[i];
if (com != null && com.length() - 3 > 0) {
try {
comEditDels[i] = Integer.parseInt(com.substring(0, com.length() - 3));
} catch (NumberFormatException exception) {
// do something or possibly ignore since the value isn't a valid integer
}
}
}
}

if (comEditDels != null) {
CallableStatement stmt = null;
PreparedStatement pstmt = null;
Connection conn = null;
ArrayDescriptor ad = null;
String dSource = getServletContext().getInitParameter("dataSource");

stmt = conn.prepareCall("{?= call My_function(?,?,?,?)}");
stmt.registerOutParameter(1, Types.INTEGER);
ad = ArrayDescriptor.createDescriptor("NUM_ARRAY", conn);
stmt.setArray(2,new ARRAY(ad, conn, comEditDels));
}

我不熟悉这些 Oracle 对象,因此我不确定以这种方式传递“comEditDels”会发生什么,但我认为这就是您想要的?

关于java - 在 servlet 中使用数组中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5969065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com