JSP中的自定义呈现基于没有instanceof的类的类型

Nic*_*eld 5 java jsp jstl jsp-tags

你如何在不同类型的jsp中正确呈现对象列表?比如说,我必须以指定的顺序渲染这些不同的对象.

一种方法可能是使用公共类型变量或instanceof,但这意味着有一个大的switch/if语句来管理它们:

<c:forEach var="o" items="${bigListofObjects}"  >
    <c:choose>
        <c:when test='${o.type=="simple"}' >
        <!-- render simple -->
        </c:when>
        <c:when test='${o.type=="complex"}' >
        <!-- render complex -->
        </c:when>
        <!-- etc etc ... -->
    </c:choose>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

我可以为每个类添加一个render()方法,但这意味着将视图与其余代码混合.

如果我想稍后渲染另一种类型会发生什么?我可以用自定义jsp标签做些什么吗?

Mau*_*rry 6

您可以包含另一个jsp,它将为给定类型执行正确的呈现.例如:

<c:forEach var="o" items="${bigListofObjects}"  >
    <c:import url="render-${o.type}.jsp"/>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)