java - 如果另一个字段上存在表单错误,如何使用 th:classapend?
问题描述
使用 Thymeleaf,如果特定错误 div(为表单输入错误保留)不可见,我想将 CSS 类附加到一行中的 div。
我正在使用 Bootstrap 4,它是网格系统。我尝试了一些列偏移来将相应的错误 div 带到正确的位置。您可能会想到一个地图,其中一个输入字段用于键,一个输入字段用于值。单个映射条目(键值对)的输入字段显示在一行中,错误消息的 div 出现在这些输入字段下方的行中。我有几个不同的情况: * 键输入字段中的错误(例如,重复或空键)加上值输入字段中的错误(这里我只使用两个 col-6 Bootstrap 类) - 这种情况没有问题,在这里我只使用与输入字段宽度相同的列 * 仅在键输入字段中出现错误 - 也没有问题,因为所有内容都是左对齐 * 仅在值输入字段中出现错误 - 在这里,我想使用列偏移 CSS 类,
<form ...>
...
<div th:each="item, iter: ${viewModel.map}">
<div class="input-group control-group mt-1">
<input th:field="${viewModel.map[__${iter.index}__].key}"
th:errorClass="is-invalid"
class="form-control">
<input th:field="${viewModel.map[__${iter.index}__].value}"
th:errorClass="is-invalid"
class="form-control">
</div>
<div class="row invalid-feedback">
<div class="col-6"
th:errors="${viewModel.map[__${iter.index}__].key}"></div>
<div class="col-6"
th:errors="${viewModel.map[__${iter.index}__].value}"></div>
<!-- I've been trying something like the following for the value
th:classappend="${viewModel.map[__${iter.index}__].key == null ? offset-sm-6 : ''}"
-->
</div>
</div>
...
</form>
如果键没有任何错误,但值字段有一些错误,则视图应如下所示
| input key | input value |
| | error message |
解决方案
在做了一些进一步的研究之后,我能够#fields.hasErrors
在左列属性部分解决这个问题(见行th:classappend
:
<form ...>
...
<div th:each="item, iter: ${viewModel.map}">
<div class="input-group control-group mt-1">
<input th:field="${viewModel.map[__${iter.index}__].key}"
th:errorClass="is-invalid"
class="form-control">
<input th:field="${viewModel.map[__${iter.index}__].value}"
th:errorClass="is-invalid"
class="form-control">
</div>
<div class="row invalid-feedback">
<div class="col-6"
th:errors="${viewModel.map[__${iter.index}__].key}"></div>
<div class="col-6"
th:classappend="${#fields.hasErrors('${viewModel.map[__${iter.index}__].key}') ? '' : 'offset-sm-6'}"
th:errors="${viewModel.map[__${iter.index}__].value}"></div>
</div>
</div>
...
</form>
推荐阅读
- c# - 奇怪的字符串排序
- html - 尝试为网格内的水平菜单创建子菜单
- xslt-1.0 - 如何从子标签中删除命名空间
- python - Dramatiq 不会将任务添加到队列中
- python - 查找出现次数最多的标签的父标签 - BeautifulSoup 4
- maven - JSF 2.3 启动中未定义的组件类型 javax.faces.ViewRoot
- pandas - 当系列为时间时,如何正确显示 matplotlib 直方图的 x 轴?
- azure - 创建 Azure Kubernetes 入口控制器以限制每个 pod 1 个连接
- firebase - @google-cloud/logging 导致错误:无法加载默认凭据
- ssl - Istio + Kubernetes:网关多于一个 TLS 证书