Java 多部分/表单-从复选框创建字符串并发送到db

Java 多部分/表单-从复选框创建字符串并发送到db,java,forms,jsp,checkbox,multipart,Java,Forms,Jsp,Checkbox,Multipart,我有一个多部分/表单数据表单,其中包含一个文件上载部分和其他字段,如复选框。我想根据复选框中的信息创建一个字符串,用分隔符分隔;以便将其发送到数据库 我的UploadServlet如下所示: try { // parses the request's content to extract file data List formItems = upload.parseRequest(request); Iterator iter = formItem

我有一个多部分/表单数据表单,其中包含一个文件上载部分和其他字段,如复选框。我想根据复选框中的信息创建一个字符串,用分隔符分隔;以便将其发送到数据库

我的UploadServlet如下所示:

try {
        // parses the request's content to extract file data
        List formItems = upload.parseRequest(request);
        Iterator iter = formItems.iterator();

        // iterates over form's fields
        while (iter.hasNext()) {

            FileItem item = (FileItem) iter.next();
            // processes only fields that are not form fields
            if (!item.isFormField()) {

                                    //doSomething 

                String fileName = new File(item.getName()).getName();
                String filePath = uploadPath + File.separator + fileName;
                File storeFile = new File(filePath);    

                // saves the file on disk
                item.write(storeFile);


            }
            else
            {

            // Process regular form field (input type="text|radio|checkbox|etc", select, etc).
                String fieldname = item.getFieldName();
                String fieldvalue = item.getString();
                // Do anotherThing


               // Can I create a string from the checkbox inputs here?

            }

谢谢

对于Apache Commons FileUpload,您提交的多部分表单中的每个HTML元素都会有一个项目


因此,如果您有多个具有相同名称的复选框,您将获得具有相同字段名称的多个项目。换句话说,对于许多复选框,您会发现许多项具有相同的字段名称,但具有不同的值。

您需要自己收集多个具有相同名称的字段。假设这些复选框的输入字段名为checkboxName,下面是一个启动示例:

List<String> checkboxValues = new ArrayList<String>(); 

// ... while looping over all items.

String fieldname = item.getFieldName();
String fieldvalue = item.getString();

if ("checkboxName".equals(fieldname)) {
    checkboxValues.add(fieldvalue);
}

// ... after looping over all items.

StringBuilder builder = new StringBuilder();

for (String checkboxValue : checkboxValues) {
    if (builder.length() > 0) builder.append(";");
    builder.append(checkboxValue);
}

String semicolonSeparatedCheckboxValues = builder.toString();
// Save in DB. By the way, why not just using a separate table with a FK?
// Storing multiple values delimited in a single DB column is a bad practice.

我不能使用request.getParameter,因为我使用的是Apache公共文件上载API,这是由多部分/表单组成的。还有其他选择吗?