th:if中如何判断一个后端map传过来的object中的一个参数是否包含当前标签的value
时间: 2024-05-11 10:15:22 浏览: 88
可以使用th:with语句将后端传递的object中的参数赋值给一个变量,然后在th:if语句中使用Java中的字符串包含方法contains来判断。
例如,如果后端传递的object中有一个名为name的参数,我们想要判断它是否包含当前标签的value,可以这样写:
```
<div th:with="name=${backendObject.name}">
<p th:if="${name.contains(tagValue)}">包含当前标签的值</p>
</div>
```
其中,`backendObject`是后端传递的对象,`tagValue`是当前标签的value值。使用th:with将`backendObject.name`赋值给变量`name`,然后在th:if语句中使用`name.contains(tagValue)`判断是否包含当前标签的值。
相关问题
后端map传过来的object中一个参数是"01,02,03",在前端<select th:with="字典">使用字典类型将参数逐个转化成字典里对应的值
可以使用Thymeleaf的#strings工具类和#dict工具类来实现该功能。
首先,需要将后端传过来的字符串类型的参数转化为List类型,可以使用#strings工具类的splitToList方法:
```
th:with="list=${#strings.splitToList(object.param,',')}"
```
然后,对于每个元素,需要使用#dict工具类的方法将其转化为对应的字典值:
```
<select>
<option th:each="item : ${list}"
th:value="${item}"
th:text="${#dict('dict.key', item)}"></option>
</select>
```
其中,'dict.key'表示字典类型的键值,item表示需要转化的值。使用#dict方法可以根据键值和值获取对应的字典值。
前端是一个合并单元格页面,求一个前后端代码,后端要求java
前端代码:
```html
<table id="myTable">
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="2">张三</td>
<td>22</td>
<td>男</td>
</tr>
<tr>
<td>23</td>
<td>女</td>
</tr>
<tr>
<td>李四</td>
<td>20</td>
<td>男</td>
</tr>
<tr>
<td>王五</td>
<td>25</td>
<td>女</td>
</tr>
</tbody>
</table>
```
后端代码:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
public class MergeCellTable {
public static void main(String[] args) {
String[] names = {"张三", "李四", "王五"};
Integer[] ages = {22, 23, 20, 25};
String[] genders = {"男", "女", "男", "女"};
List<Map<String, Object>> dataList = new ArrayList<>();
for (int i = 0; i < names.length; i++) {
Map<String, Object> data = new TreeMap<>();
data.put("name", names[i]);
data.put("age", ages[i]);
data.put("gender", genders[i]);
dataList.add(data);
}
mergeCell(dataList, "name");
for (Map<String, Object> data : dataList) {
System.out.println(data.get("name") + " " + data.get("age") + " " + data.get("gender"));
}
}
public static void mergeCell(List<Map<String, Object>> dataList, String field) {
int start = 0;
int end = 0;
Object prevValue = null;
for (int i = 0; i < dataList.size(); i++) {
Object value = dataList.get(i).get(field);
if (i == 0) {
prevValue = value;
continue;
}
if (!value.equals(prevValue)) {
if (end > start) {
merge(dataList, field, start, end);
i -= (end - start);
}
prevValue = value;
start = i;
}
end = i;
}
if (end > start) {
merge(dataList, field, start, end);
}
}
public static void merge(List<Map<String, Object>> dataList, String field, int start, int end) {
Map<String, Object> data = dataList.get(start);
data.put("rowspan", end - start + 1);
for (int i = start + 1; i <= end; i++) {
dataList.get(i).remove(field);
}
}
}
```
以上代码实现了根据指定字段合并单元格的功能。代码中使用了 Map 存储表格数据,其中 key 是列名,value 是单元格的值。mergeCell 方法根据指定字段依次遍历表格数据,如果当前单元格值和上一个单元格值不相等,则说明需要合并前面的单元格,调用 merge 方法进行合并。merge 方法将前面单元格的 rowspan 属性设置为需要合并的单元格数量,然后将前面单元格对应的 Map 中的指定字段删除,以达到合并单元格的效果。最后,遍历 Map 输出表格数据即可。
阅读全文