作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在java端填充了2个数组列表:一个包含 Nature 的完整列表:allNature
,另一个包含 java 端 natures
上选定的列表。如何检查完整 allNatures
列表中的 natures
?
我在文档中读到“如果我们的 features 属性在表单支持 bean 中包含一些选定的值,th:field
会处理这个问题,并添加一个 check= “checked”属性到相应的输入标签。
但是 allNature
列表包含一些元素,并且未检查它们。
在此演变之前,natures
和 allNatures
是 String 元素,并且它曾经可以工作。现在我在 Nature
元素中更改它,它不再起作用。在这里,它是不同的对象引用。
这是我的 html 代码:
<div th:each="nature : ${allNature}" class="checkbox">
<label >
<input type="checkbox" th:field="*{natures}" th:value="${nature}" class="checkboxNature" />
<span th:text="${nature.nom}">...</span>
<span th:text="${nature.routage.nomRoutage}" >...</span>
</label>
</div>
以及我的 Controller 中的相关(对我来说)java代码:
@Controller
@SessionAttributes(value = "topologie", types = { Topologie.class })
@RequestMapping("/bus/topologie")
public class TopologieController {
@ModelAttribute("allNature")
public List<Nature> getAllNatures(final Topologie topologie)
throws Exception {
LOGGER.info("ModelAttribute to get all Nature for Cadre : {}",
topologie.getCadre());
return natureService.getNaturesByVersionCadre(topologie.getCadre(),
topologie.getVersionCadre());
}
和对象引用
public class Topologie {
private List<Nature> natures = new ArrayList<Nature>();
在我的 Controller 中,在显示模板之前,此代码确认必须检查 allNature
列表中 6 个元素中的 3 个元素:
for (Nature nat : natSelect) {
LOGGER.info(" nature : {}, contains: {}", nat.getNom(),
allNature.contains(nat));
}
结果:
2017-12-05 12:11:45.450 INFO 6984 --- [nio-8990-exec-3] f.cnamts.navigo.web.TopologieController : nature : hi_atmplm2a_out, contains: true
2017-12-05 12:11:45.450 INFO 6984 --- [nio-8990-exec-3] f.cnamts.navigo.web.TopologieController : nature : hi_lm2aconv_in, contains: true
2017-12-05 12:11:45.450 INFO 6984 --- [nio-8990-exec-3] f.cnamts.navigo.web.TopologieController : nature : hi_lm2asign_out, contains: true
最佳答案
由于 Nature 是用户定义的数据类型,因此要使用 th:field 进行工作,您必须重写 bean 中的 equals 方法,以在比较对象时定义相等性。
关于java - 我的复选框列表未填充相应的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47577575/
我是一名优秀的程序员,十分优秀!