为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着一只汪 2021-12-18 09:49:23
我有一个对象列表和多个下拉列表。我想显示列表中的数据。但我的问题是我不想有这样的事情:例如:我不想在下拉文件名中出现两次:文件 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>        .......        .......
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2021-12-18
?
慕容森

TA贡献1853条经验 获得超18个赞

永远不要用 JAVA 方式做同样的事情,因为它只是双倍处理时间。

我会避免在 Java 级别代码中进行处理,因为查询级别很容易实现。

只需使用Select distinct关键字,它就像一个魅力..!!

把事情简单化。


查看完整回答
反对 回复 2021-12-18
?
动漫人物

TA贡献1815条经验 获得超10个赞

如果这会导致问题并且需要删除重复项,最好不要将重复项带入内存。


因此,不要使用存储库方法 - misraMessagesRepository.findAll();,您需要在该存储库中编写一个新方法,该方法返回DISTINCT结果并在 DAO 中使用该方法。


@Query("SELECT DISTINCT * FROM MESSAGES_TABLE" , nativeQuery = true)

List<MisraMessages> findDistinctMessages();

您还没有显示您的存储库,所以我使用了虚拟表名。如果仍然感到困惑并需要更好的答案,请显示您的存储库代码和实体详细信息。


查看完整回答
反对 回复 2021-12-18
  • 3 回答
  • 0 关注
  • 176 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号