<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>
<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>
<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的类,我们可以使这个类成为Spring bean。下面是一段简单的代码,可以完成这项工作:
@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;
}
}
那么您的Thymeleaf代码将如下所示:
<div class="row" th:each="subLists : ${@boostrapUtility.createSubLists(${fields})}">
<div th:class="span+${field}" th:each="field : ${subLists}">
<!-- whatever in here -->
</div>
</div>
正如我从thymeleaf文档中了解到的那样,我尝试了:
这是我的html表单: 这是DTO 这里的日期是 此外,当我导入一个JSON文件时,我有一个用户数组,我能够成功地运行它。 我错过了什么? 注意:java.util.date起作用!
图片
在 Hexo 中,有两个方法可用于渲染文件或字符串,分别是非同步的 hexo.render.render 和同步的 hexo.render.renderSync,这两个方法的使用方式十分类似,因此以下仅以非同步的 hexo.render.render 为例。 渲染字符串 在渲染字符串时,您必须指定 engine,如此一来 Hexo 才知道该使用哪个渲染引擎来渲染。 hexo.render.rend
6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren
渲染 REST framework 包含许多内置的渲染器类,允许您使用各种 media type 返回响应。同时也支持自定义渲染器。 如何确定使用哪个渲染器 视图的渲染器集合始终被定义为类列表。当调用视图时,REST framework 将对请求内容进行分析,并确定最合适的渲染器以满足请求。内容分析的基本过程包括检查请求的 Accept header,以确定它在响应中期望的 media type。