我试图实现一个包含表单的thymeleaf片段,但是在传递th:object值时遇到了问题。
片段:
<div th:fragment="editCard(colSize, title, formObject, formAction, fields)" th:class="${'col-lg-' + colSize}">
<div class="card">
<div class="card-header d-flex align-items-center">
<h4 th:text="${title}"></h4>
</div>
<div class="card-body">
<form th:object="${__${formObject}__}" th:action="${formAction}" method="post" class="form-horizontal">
<div th:replace="${fields}"></div>
</form>
</div>
</div>
</div>
以及调用:
<div th:replace="fragments/cards2 :: editCard(colSize='12', title='Concert', formObject=${concert}, formAction='/concert/save', fields=~{ :: .fields})" >
<div class="fields">
<input type="hidden" th:field="*{id}"/>
<!--/*/ <th:block th:include="fragments/elements :: editSelect(label='Season', val='x', field='season', selectList='${seasons}', itemText='${item}', autofocus='autofocus')"></th:block> /*/-->
<!--/*/ <th:block th:include="fragments/elements :: editText(label='Title', val='x', field='title', autofocus='')"></th:block> /*/-->
<!--/*/ <th:block th:include="fragments/elements :: editCheckbox(label='Tour', field='tour')"></th:block> /*/-->
</div>
</div>
</div>
在thymeleaf和spring绑定之间似乎存在一种交互作用,它阻止了formobject被准确地传递。我不确定调用方和片段之间的哪个thymeleaf语法组合是正确的。
1条答案
按热度按时间hsvhsicv1#
你应该把绳子传过去
'concert'
而不是本例中的对象。这有点奇怪,但应该对你有用。其余的保持不变。你真正想要的是表达
th:object="${__${formObject}__}"
评估th:object="${concert}"
(传递字符串就可以了)。现在它的评估有些奇怪,比如th:object="${java.class.whatever@123412}"
(默认值)toString
为了${concert}
).