spring - 从持久的对象列表中加载选择框,并使用该选择框值从选择框中加载完整对象
问题描述
我有一个带有我的业务对象的休眠表:活动(ID,名称,描述,...)。使用 Thymeleaf,我正在预加载一个带有活动名称的选择框。一旦用户选择了一个名称并且我尝试将活动 ID 提交给控制器,或者由于我有一个包含所有活动对象的数组,我只会从选择框中传递选定的对象。
您认为最好的方法是什么?
<div class="form-group blu-margin">
<form th:object="${campaign}" th:action="@{/campaign}" method="post">
Select the campaign you would like to execute :
<select
class="form-control" id="dropCampaign" name="dropCampaign">
<option value="0">select campaign</option>
<option th:each="INcampaign : ${campaigns}"
th:value="${INcampaign.id}"
th:text="${INcampaign.name}">
</option>
</select>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
解决方案
阅读各种文章并尝试不同的事情,我想我明白了。分享我的解决方案以防它可以帮助某人。诀窍是在选择标签中添加 id 和 name。然后,当然,在您的控制器中,您需要在方法签名中添加 @RequestParam Long id。
但请注意,这不是执行此操作的常用方法。更标准的方法是调用诸如 /campaign/{id}/edit 之类的 URL。但我不确定安全性,因为并非所有用户都可以访问所有广告系列,所以我不想将 URL 暴露给这种编辑可能性(即使我确信你可以以某种方式保护它)。对我来说,这种方式似乎更容易。
<form name="f" th:action="@{/campaign}" th:object="${campaign}" method="post">
<select id="id" name="id">
<option value="0">select campaign</option>
<option th:each="campaign : ${campaigns}"
th:value="${campaign.id}"
th:text="${campaign.name}"
>
</option>
</select>
<button type="submit" class="btn btn-primary">Submit</button>
推荐阅读
- c# - 更改按钮颜色的代码不起作用
- excel - 循环遍历列中的合并单元格以在 VBA 中获取它们的地址
- javascript - Svelte.js - 无法从列表中正确删除项目
- java - Spring JPA Hibernate DeleteByColumnName 的行为非常低效
- maven - 使用maven编译源码背后的思想
- machine-learning - 在特定领域的语料库中使用 BERT
- excel - 复制单元格范围会生成对象定义错误
- html - Is it possible for front-end to know the local supported font-family?
- python - URL, GET, POST parameters in Django
- android - 片段在 tabLayout 中出现多次