尝试检查对象的形式是否不为空:
<form th:action="@{register}" th:object="${loginInfo != null ? loginInfo.account : account}" method="post">
<input th:field="*{phoneNumber}"/>
如果定义了loginInfo
并且不为null,我想以loginInfo.account
的形式使用。
否则,我想使用account
对象。
该怎么做?
在上面的示例中,我得到IllegalStateException: Neither BindingResult nor plain target object for bean name 'loginInfo!= null ? loginInfo' available as request attribute
答案 0 :(得分:0)
这就是我要做的。由于我们无法在th:object
内添加条件,因此实现此目的的另一种方法是将th:block
与th:if
一起使用。当然,这意味着您需要在模板中输入表单的内容,否则将需要重复代码。我当然假设loginInfo.account与account具有相同的字段。
首先,让我们在layouts文件夹中创建模板。对于此示例,此html文件将称为form-inputs
。
<th:block th:fragment="form-inputs">
<input th:field="*{phoneNumber}"/>
</th:block>
现在,页面将具有以下代码来确定要使用哪个对象。如果loginInfo
不为null,那么我们将使用它的帐户信息,否则,我们将使用account
。
<th:block th:if="${loginInfo!=null}">
<form th:action="@{register}" th:object="${loginInfo.account}" method="post">
<section th:replace="layouts/form-inputs :: form-inputs" th:remove="tag">
</section>
</form>
</th:block>
<th:block th:if="${loginInfo == null}">
<form th:action="@{register}" th:object="${account}" method="post">
<section th:replace="layouts/form-inputs :: form-inputs" th:remove="tag">
</section>
</form>
</th:block>
希望这对您有帮助!