Jsp 胸腺素渲染
使用jsp,我们可以将html元素呈现为Jsp 胸腺素渲染,jsp,thymeleaf,Jsp,Thymeleaf,使用jsp,我们可以将html元素呈现为 <c:set var="size" value="0" /> <c:forEach items="${fields}" var="field" varStatus="status"> <c:if="${status.first}"> <div class="row"> </c:if> <c:set var="size" value="${size
<c:set var="size" value="0" />
<c:forEach items="${fields}" var="field" varStatus="status">
<c:if="${status.first}">
<div class="row">
</c:if>
<c:set var="size" value="${size + field.size}" />
<c:if="${size > 12}">
</div>
<div class="row">
<c:set var="size" value="${field.size}" />
</c:if>
<jsp:include page="/WEB-INF/jsp/field.jsp" >
<jsp:param name="field" value="${field}"/>
</jsp:include>
<c:if="${status.last}">
</div>
</c:if>
</c:forEach>
在这里,我根据字段的大小(大小6变为span6)在
中构建htmls输入元素。如果“我的字段”列表有4个大小分别为6、3、8和4的元素,它会将html呈现为
<div class="row">
<div class="span6">
<input />
<div>
<div class="span3">
<input />
<div>
</div>
<div class="row">
<div class="span8">
<input />
<div>
<div class="span4">
<input />
<div>
</div>
我试图将前几个部分转换为thymeleaf,如下所示
<th:block th:with="size=0">
<th:block th:each="field, iterStat : ${fields}">
<th:block if="${iterStat.index == 0}">
<div class="row">
</th:block>
<th:block if="${iterStat.index == (#lists.size(${fields}) - 1)}">
</div>
</th:block>
</th:block>
</th:block>
但是thymeleaf不能呈现它,因为div标记
在它开始的
中没有关闭。
有没有办法将上面的jsp代码转换为thymeleaf
我正在使用thymeleaf 2.0.17和spring3如果我是您,我将使用以下代码,这将实现关注点分离,也将实现您正在尝试的操作: 首先创建一个类,该类负责从大小列表创建子列表。 为了使用Thymeleaf轻松使用这个类,我们可以将这个类设置为Springbean。 下面是一段可以完成这项工作的粗略代码:
@Component
public class BoostrapUtility {
public List<List<Integer>> createSubLists(Collection<Integer> sizeList) {
final List<List<Integer>> results = new ArrayList<>();
final int maxSize = 12;
int rowSize = 0;
List<Integer> subList = new ArrayList<>();
for (Integer size : sizeList) {
if(rowSize + size <= maxSize) {
subList.add(size);
rowSize += size;
}
else {
results.add(subList);
subList = new ArrayList<>();
subList.add(size);
rowSize = size;
}
}
if(!subList.isEmpty()) {
results.add(subList);
}
return results;
}
}
@组件
公共类布尔运算{
公共列表CreateSubList(集合大小列表){
最终列表结果=新建ArrayList();
最终int maxSize=12;
int rowSize=0;
列表子列表=新的ArrayList();
用于(整数大小:sizeList){
如果(rowSize+size如果我是你,我将使用以下代码,这将实现关注点的分离,也将实现你试图做的事情:
首先创建一个类,该类负责从大小列表创建子列表。
为了使用Thymeleaf轻松使用这个类,我们可以将这个类设置为Springbean。
下面是一段可以完成这项工作的粗略代码:
@Component
public class BoostrapUtility {
public List<List<Integer>> createSubLists(Collection<Integer> sizeList) {
final List<List<Integer>> results = new ArrayList<>();
final int maxSize = 12;
int rowSize = 0;
List<Integer> subList = new ArrayList<>();
for (Integer size : sizeList) {
if(rowSize + size <= maxSize) {
subList.add(size);
rowSize += size;
}
else {
results.add(subList);
subList = new ArrayList<>();
subList.add(size);
rowSize = size;
}
}
if(!subList.isEmpty()) {
results.add(subList);
}
return results;
}
}
@组件
公共类布尔运算{
公共列表CreateSubList(集合大小列表){
最终列表结果=新建ArrayList();
最终int maxSize=12;
int rowSize=0;
列表子列表=新的ArrayList();
用于(整数大小:sizeList){
如果(行大小+大小)