如何制作没有重复元素的下拉列表?

我有一个对象列表和多个下拉列表。我想显示列表中的数据。但我的问题是我不想有这样的事情:


例如:我不想在下拉文件名中出现两次:


文件 1

文件 1

文件 2

文件 3

文件 3

我只想拥有: file1, file2, file3


这是我的控制器,我将列表放在模型中


@GetMapping("/filter/functionality/misramessages")

public String filterFunctionality(Model model) {

    model.addAttribute("misraMessages", misraMessagesService.findAllMisraMessagesFromDb());

    return "functionality";

}

在 html 之后,我这样做:


 <!-- Filter File Name-->

        <div class="form-group row">

            <label for="fileName" class="col-sm-2 col-form-label">File Name</label>

            <div class="col-sm-10">

                <select class="form-control"  name="file_name" id="fileName">

                    <option th:value="0" text="Please Select"></option>

                    <option  th:each = "misra : ${misraMessages}"

                             th:value="${misra.fileName}"

                             th:text="${misra.fileName}">

                    </option>

                </select>

            </div>

        </div>


<!-- Filter Message Number-->

        <div class="form-group row">

            <label for="messageNumber" class="col-sm-2 col-form-label">Message Number</label>

            <div class="col-sm-10">

                <select class="form-control"  name="message_number" id="messageNumber">

                    <option th:value="0" text="Please Select"></option>

                    <option  th:each = "misra : ${misraMessages}"

                             th:value="${misra.messageNumber}"

                             th:text="${misra.messageNumber}">

                    </option>

                </select>

            </div>

        </div>

        .......

        .......


守着一只汪
浏览 177回答 3
3回答

慕村9548890

好吧,我希望这misraMessagesService.findAllMisraMessagesFromDb()是返回字符串列表。所以如果你不想改变你的findAllMisraMessagesFromDb()方法,你可以做这样的事情:List<String> messages = misraMessagesService.findAllMisraMessagesFromDb();Set<String> uniqueMsgs = new HashSet<String>(messages);或者您也可以在misraMessagesRepository以下位置创建一个新方法:@Query("SELECT DISTINCT name FROM MisraMessages")public List<MisraMessages> findDistinctMisraMessagesFromDb();两者中的任何一个都可以。

慕容森

永远不要用 JAVA 方式做同样的事情,因为它只是双倍处理时间。我会避免在 Java 级别代码中进行处理,因为查询级别很容易实现。只需使用Select distinct关键字,它就像一个魅力..!!把事情简单化。

动漫人物

如果这会导致问题并且需要删除重复项,最好不要将重复项带入内存。因此,不要使用存储库方法 - misraMessagesRepository.findAll();,您需要在该存储库中编写一个新方法,该方法返回DISTINCT结果并在 DAO 中使用该方法。@Query("SELECT DISTINCT * FROM MESSAGES_TABLE" , nativeQuery = true)List<MisraMessages> findDistinctMessages();您还没有显示您的存储库,所以我使用了虚拟表名。如果仍然感到困惑并需要更好的答案,请显示您的存储库代码和实体详细信息。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java