【问题标题】:Html, thymleaf radiobutton th:field="" fails if data is nullHtml, thymeleaf 单选按钮 th:field="" 如果数据为空则失败
【发布时间】:2018-05-24 20:12:59
【问题描述】:

我想自动填充收据数据。如果我的收据不为空,它应该为带有百里香叶的单选按钮选择正确的性别。如果收据不为空,则没有错误,但如果收据为空,则抛出错误

<div class="form-group">
            <div id="genderReceipt">
                <label for="genderMaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderMaleReceipt" value="MALE" th:field="*{receipt.gender}"/>
                    Herr
                </label>
                <label for="genderFemaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderFemaleReceipt" value="FEMALE" th:field="*{receipt.gender}"/>
                    Frau
                </label>
            </div>
            <label for="genderReceipt" class="error" style="display: none;"> Bitte gib eine Anrede an.</label>
</div>

结果应该是这样的:如果receipt == null 两者都未选中...如果receipt != null 则选中正确的性别

错误日志说:

java.lang.IllegalStateException: Bean 名称“receipt”的 BindingResult 和普通目标对象都不能用作请求属性

【问题讨论】:

  • 请在一些 pastebin 网站上发布长日志,否则很难阅读这个问题。阿洛斯,如果没有sscce.org 的问题,可能没有人能够提供帮助。您显示 HTML 模板 sn-p 但日志显示 Java 错误。您提供的信息无法知道错误出在哪里。
  • 我认为只有当收据对象为空时才会发生错误。在 thymeleaf 中可以说 th:value="${ object } != null ? 'ok' : 'not ok'" 但我找不到输入类型 radio 和 th:field=... 的解决方案

标签: html input radio-button thymeleaf


【解决方案1】:

我对这个问题的解决方案是复制代码并在示例中插入 th:if 语句

<div th:if="${receipt} == null">
                <label for="genderFemaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderMaleReceipt" value="MALE" />
                    Herr
                </label>
                <label for="genderFemaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderFemaleReceipt" value="FEMALE" />
                    Frau
                </label>
            </div>
            <div th:if="${receipt} != null">
                <label for="genderFemaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderMaleReceipt" value="MALE" th:field="*{receipt.gender}"/>
                    Herr
                </label>
                <label for="genderFemaleReceipt" class="radio-inline">
                    <input type="radio" name="genderReceipt" id="genderFemaleReceipt" value="FEMALE" th:field="*{receipt.gender}"/>
                    Frau
                </label>
            </div>

我知道那不是最佳实践;(但我不知道其他方法。

【讨论】:

  • 在控制器中用空字符串初始化性别属性就足够了,而不是重复代码。
猜你喜欢
  • 2019-10-17
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2017-09-02
相关资源
最近更新 更多