我尝试使用 facelets 和 JSF 将旧代码转换为 thymeleaf 和 Spring ,但我在这一点上坚持了下来。
包含在嵌套的对象列表中。 这些对象也有列表。
public class ContainerGrid {
private Collection<MiGrid> gridList = new ArrayList<MiGrid>();
//Getter/Setters
}
public class MiGrid {
private Collection<CeldaGrid> celdaGridList;
//Getter/Setters
}
public class CeldaGrid {
private int valor;
private int index;
private String texto;
private int fila;
private int col;
private String estilo;
//Getter/Setters
}
此代码正确创建网格,并为 id 和名称提供正确的值。
我可以用百里香叶做的一件事就像我在 id 和名称
中的两个部分一样使用手镯
<ui:repeat value="#{containergrid.gridList}" var="eachCelda">
<tr>
<ui:repeat value="#{eachCelda.celdaGridList}" var="celda">
<td id="gridPrincipal-#{celda.fila}-#{celda.col}">
<input class="celdaGrid#{celda.estilo}" type="text"
id="#{celda.texto}_#{celda.index gt 9 ? '':0}#{celda.index}#{(celda.fila+1) gt 9 ? '':0}#{celda.fila+1}"
name="C#{celda.texto}#{celda.index gt 9 ? '':0}#{celda.index}#{celda.fila+1 gt 9 ? '':0}#{celda.fila+1}"
title="#{celda.texto}#{celda.index gt 9 ? '':0}#{celda.index}#{celda.fila+1 gt 9 ? '':0}#{celda.fila+1}"
value="#{celda.valor}" />
</td>
</ui:repeat>
</tr>
</ui:repeat>
因此,网格中的单元格将在id:
中包含此值行1:C_0101 C_0201 P_0101 C_0301 C_0401 P_0201
ROW 2:C_0102 C_0202 P_0102 C_0302 C_0402 P_0202
使用 thymeleaf 我已正确创建网格,但我不知道如何在 th:id
中进行第二次比较<table id="gridPrincipal">
<tbody>
<tr th:each="eachCelda,indexList : *{gridList}">
<td th:each="celda,indexCelda: ${eachCelda.celdaGridList}">
<input type="text"
th:id="__${indexCelda.index}__ > 9 ? __${celda.texto}____${celda.index}__:__${celda.texto}__0__${celda.index}__"
th:field="*{celdaGridList[__${indexCelda.index}__].valor}" />
</td>
</tr>
</tbody>
</table>
我想添加第二个比较,就像我使用facelets或以其他方式做的那样。
有什么想法吗?
由于
答案 0 :(得分:1)
我认为它应该是这样的:
th:id="${celda.texto + (indexCelda.index > 9 ? '' : '0') + indexCelda.index + (celda.fila+1 > 9 ? '' : '0') + (celda.fila+1)}"