Thymeleaf:th:价值 - 如果财产存在

时间:2017-05-13 11:59:34

标签: spring-mvc thymeleaf

我想创建一个隐藏的输入字段:

<input type="hidden" th:value="${map.version} name="version"/>

问题:
version可能还有不存在的属性(我不是在讨论null!) 现在我得到一个例外Property or field 'version' cannot be found on object

我需要什么:
如果它不存在,则可以忽略th:value语句或删除标记

澄清:
map来自Spring Controller的处理程序方法:

@PostMapping("/new")
public String handleMapFormSubmit(
    @ModelAttribute("map") @Valid AddMapCommand command, BindingResult result ) {

    if ( result.hasErrors() ) {
        return "map-form";
    }

    // do some stuff

    return ".....";
}

问题是此处理程序方法中的map(AddMapCommmand)不包含 version属性。在另一个处理程序方法(UpdateMapCommand)中。重点是重用 map-form百万美元模板在两种情况下几乎相似。

1 个答案:

答案 0 :(得分:1)

您可以尝试将instanceof运算符仅用于包含该属性的对象:

<input type="hidden" 
 th:if="${map instanceof T(my.project.UpdateMapCommand)}" 
 th:value="${map.version} name="version">

为了将来参考,使用map这样的变量非常令人困惑,并且读者不会将其解释为java.util.Map。您应该更改map变量名称以减少混淆,或者至少是为了在StackOverflow上提出问题。