首页 > 解决方案 > 如何做一个没有重复元素的下拉列表?

问题描述

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

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

文件 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>
        .......
        .......

标签: javaspringspring-mvcspring-bootthymeleaf

解决方案


好吧,我希望这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();

两者中的任何一个都可以。


推荐阅读