我正在使用Thymeleaf(thymeleaf-spring4-2.1.3)和Spring MVC(4.1.1),并且有一个这样的模型/命令对象:
public class GenericEntity {
private Map<String, Object> properties = new LinkedHashMap<String, Object>();
...
这是我的百万美元模板的相关部分(简化为我根据配置生成输入类型):
<input type="checkbox" th:field="*{properties[__${column.name}__]}" />
没有为该复选框创建隐藏字段,即使它是实例布尔值。
Thymeleaf如何确定必须生成隐藏字段?
即使我将我的属性更改为
private Map<String, Boolean> boolProps = new HashMap<String, Boolean>();
在这里:没有隐藏的领域。
答案 0 :(得分:0)
昨天我正在努力解决一个完全相反的问题,你的帖子帮助我走向了正确的方向!基本上,百里香在增加隐藏的领域总是,这打破了我的设计。
我发现你的帖子和这篇文章非常有用: https://github.com/thymeleaf/thymeleaf-spring/issues/68
有一条评论已于16天前(今天截至2014年12月12日)添加。
查看你的代码。您是否尝试过非常简单的操作,例如在您的班级中添加另一个变量:
private boolean test;
添加getter和setter,然后尝试将其添加到模板中:
<input type="checkbox" th:field="*{test}" />
检查是否添加了隐藏字段。
我假设您没有收到任何编译错误? 当我尝试使用时:
private Map<String, Object> map = new HashMap<String, Object>();
我必须将th:value
添加到模板。
<input type="checkbox" id="mapID" th:field="*{map['abc']}" th:value="123" />
我得到了:
<input type="checkbox" id="mapID" value="123" name="map['abc']">
<input type="hidden" name="_map['abc']" value="on">
我希望这有帮助!
答案 1 :(得分:0)
这实际上是百里香弹簧中的一个错误。
请参阅 - https://github.com/thymeleaf/thymeleaf-spring/issues/71