java - 使用 Apache FileItem 从复选框获取 boolean 值的优雅方法

标签 java servlets checkbox multipartform-data apache-commons-fileupload

有一个带有复选框输入的表单:

<form action='${pageContext.request.contextPath}/register' method="POST"
      enctype="multipart/form-data">

        <div>
            <label class="form-check-label">
                <input id="news_feed" name="news_feed" class="form-check-input" type="checkbox" value="${sessionScope.bean.interestedInNewsFeed}">
                I want to receive updates via email.
            </label>
        </div>
</form>

在我的 servlet 中,我尝试接收值:

List<FileItem> multiparts = new ServletFileUpload(
                        new DiskFileItemFactory()).parseRequest(req);
                boolean interestedInNewsFeed = Boolean.parseBoolean(multiparts.stream().filter((x) -> x.getFieldName().equals("news_feed")).
                        findFirst().get().getString());

但是,我遇到了异常(exception):

java.util.NoSuchElementException: No value present

我试图查看返回的字符串:

  1. 如果选中复选框,则返回空字符串。
  2. 如果未选中复选框 - 则会引发异常。

如何使用 Apache-Commons-FileUpload 库的 FileItem 类将复选框值解析为 boolean 值而不出现异常?

我用谷歌搜索了这个问题,但找不到任何相关信息。

最佳答案

checked checkboxes是表单帖子的一部分。因此,最直接的解决方案是

boolean interestedInNewsFeed = multiparts.stream().filter((x) -> x.getFieldName().equals("news_feed"))
                .findAny().isPresent();

关于java - 使用 Apache FileItem 从复选框获取 boolean 值的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48050120/

相关文章:

java - 使用 JNI 从 Java 调用 C++ 程序时出错。获取 SEGV_ACCERR

java - Intellij IDEA Apache Tomcat。如何编辑图像?

javascript - 复选框默认选中 ="checked"不起作用?

java - 如何在 SWT 对象上调用 Objective-C 方法?

Java - 处理文件中的数据

java - 更改从 servlet 类返回的 div 类位置

java - servlet 容器如何找到 WebApplicationInitializer 实现

java - OO PHP 服务性能

html - 无法找出未应用复选框样式的原因

javascript - 使用动态添加的复选框启用/禁用按钮