Thymeleaf - 绑定不在片段中

时间:2015-11-04 09:59:23

标签: java spring thymeleaf

不要与this question混淆!

所以,我试图在Thymeleaf片段中传递一个bean并将其属性绑定到某些字段。

即。我们假设我有一个名为myFragment的片段:

<div th:fragment="myFragment(myBean)"> 
   <select class="selectpicker" th:field="${myBean.myProperty}">
        <option th:each="myProperty : ${myBean.myProperties}" th:value="${myProperty}" th:text="${myProperty}"></option>
    </select>
</div> 

正在调用片段:

<div th:include="fragments/myFragment:: myFragment(myBean=${myBean})"> ... </div>

这是一个疯狂的原因,因为变量的名称和bean的名称是相同的(myBean)。但是如果bean的名称不同,就像这样:

<div th:include="fragments/myFragment:: myFragment(myBean=${someOtherBean})"> ... </div>

我得到一个例外:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'myBean' available as request attribute

对于th:textth:href等其他属性,一切正常。但是,如果我使用th:field属性(如果我尝试将属性绑定到某个特定字段),则会发生异常。在这种情况下如何正确执行绑定?

1 个答案:

答案 0 :(得分:1)

您可以尝试删除select元素中的th:field="...",然后在th:selected="${<your_logic_when_is_selected>}"元素中添加<option>

还有一件事。从我的角度来看,你不需要在<div th:include="元素中声明的变量名。