Java 如何将一段JSP转换为Thymeleaf语法?
我有一些JSP,我想转换成Thymeleaf:Java 如何将一段JSP转换为Thymeleaf语法?,java,spring,jsp,thymeleaf,Java,Spring,Jsp,Thymeleaf,我有一些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="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>
在我看来,实现这一点的最佳方法是创建一个自定义AttrProcessor,它根据“portfolioWorks”变量设置类属性值。所以它看起来像:
<div class="element block" some_scope:appendClass="${portfolioWorks}"></div>
看看:
我还建议您查看thymeleaf源代码,有很多不同的attr处理器,因此您可以更快地了解情况。您可以使用th:with属性设置变量,但不幸的是,它仅在定义它的块中可见。()因此,您需要稍微修改您的逻辑
<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:if可以很容易地用th:if或th:除非更新到th:block,然后在其中处理div块
如果这看起来有点难看-您可以在其他html文件中将块定义为片段(th:fragment),并使用th:include调用它,并在其中传递参数${wRels.getPublicSitePortfolioWorkTypes().getId()}。您可以在此处阅读有关模板的更多信息:
如果您需要更多信息或详细信息,请告诉我:)