我有一些JSP,我想要转换为Thymeleaf:
<c:forEach var="portfolioWork" items="${portfolioWorks}" varStatus="statusVariable">
<c:set var="stylesStr" value="" />
<c:if test="${not empty portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<c:forEach var="wRels" items="${portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<c:set var="stylesStr" value="${stylesStr} type${wRels.getPublicSitePortfolioWorkTypes().getId()} " />
</c:forEach>
</c:if>
<div class="element ${stylesStr} block">
*****************************************
我无法理解,如何转换这个复杂的结构:
<c:set var="stylesStr" value="" />
<c:if test="${not empty portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<c:forEach var="wRels" items="${portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<c:set var="stylesStr" value="${stylesStr} type${wRels.getPublicSitePortfolioWorkTypes().getId()} " />
</c:forEach>
</c:if>
答案 0 :(得分:0)
从我的角度来看,实现这一点的最佳方法是创建一个自定义的AttrProcessor,它根据&#34; portfolioWorks&#34;设置类属性值。变量。所以它看起来像:
<div class="element block" some_scope:appendClass="${portfolioWorks}"></div>
看看:http://www.thymeleaf.org/doc/tutorials/2.1/extendingthymeleaf.html#attribute-processors
我也建议通过百万富翁来源查看,有很多不同的attr处理器,所以你可以更快地得到这个想法。
答案 1 :(得分:0)
您可以使用 th:with 属性来设置变量,但不幸的是,它仅在定义它的块中可见。 (http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#local-variables)因此,你需要修改一下你的逻辑。
<c:if test="${not empty portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<c:forEach var="wRels" items="${portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<div class="element ${wRels.getPublicSitePortfolioWorkTypes().getId()} block">
</c:forEach>
</c:if>
<c:if test="${not empty portfolioWork.getPublicSitePortfolioWorksToTypeRelations()}">
<div class="element block">
</c:if>
使用这样的逻辑 c:如果可以通过 th轻松更新到 th:block :if 或 th:除非< / em>然后你在里面处理div块。
如果这看起来有点丑陋 - 你可以将其他html文件中的块定义为片段(th:fragment)并使用th:include并传递参数 $ {wRels.getPublicSitePortfolioWorkTypes()来调用它.getId ()} 里面。您可以在此处详细了解模板:http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#template-layout
如果您需要更多信息或详细信息,请告诉我:)