我的复选框列表未填充相应的值

时间:2017-11-30 15:59:46

标签: java spring-mvc spring-boot checkbox thymeleaf

我在java端填充了2个arraylist: 一个包含完整的自然列表:allNature,另一个包含java侧natures的选定列表。如何查看完整natures列表中的allNatures

我已经在文档中读过"如果我们的features属性在我们的表单支持bean中包含一些选定的值,那么th:field会处理这个并且会添加一个checked =" checked"属性为相应的输入标签。"。

但是allNature列表包含一些元素,但不会检查它们。

在此演变之前naturesallNatures是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>

和我控制器中的相关(对我)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>();

在显示模板之前的我的控制器中,此代码确认必须检查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

1 个答案:

答案 0 :(得分:1)

因为Nature是用户定义数据类型,要使用th:field进行工作,你必须在bean中重写equals方法,以便在比较对象时定义相等性。