2015-11-04 45 views
1

不要與this question混淆!百里香 - 綁定不起作用的片段

所以,我試圖在Thymeleaf片段中傳遞一個bean並將其屬性綁定到某些字段。

I.e.比方說,我有一個片段名爲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屬性(如果我嘗試將屬性綁定到某個特定字段)。如何在這種情況下正確執行綁定?

+0

但是,你的模式適合我。謝謝。 '

' –

回答

1

您可以嘗試刪除select元素中的th:field="...",然後在<option>元素中添加th:selected="${<your_logic_when_is_selected>}"

還有一件事。從我的角度來看,您不需要在<div th:include="元素中聲明的變量名稱。