不要与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:text
,th:href
等其他属性,一切正常。但是,如果我使用th:field
属性(如果我尝试将属性绑定到某个特定字段),则会发生异常。在这种情况下如何正确执行绑定?
答案 0 :(得分:1)
您可以尝试删除select元素中的th:field="..."
,然后在th:selected="${<your_logic_when_is_selected>}"
元素中添加<option>
。
还有一件事。从我的角度来看,你不需要在<div th:include="
元素中声明的变量名。