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

标签 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>

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

如果我想稍后呈现另一种类型会怎样?我可以使用自定义 jsp 标签做些什么吗?

最佳答案

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

<c:forEach var="o" items="${bigListofObjects}"  >
    <c:import url="render-${o.type}.jsp"/>
</c:forEach>

关于java - 基于没有 instanceof 的类类型的 JSP 中的自定义呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694698/

相关文章:

javascript - 无法访问 Action 类中禁用下拉列表的所选项目的值(struts 2)

javax.servlet.ServletException : javax. servlet.jsp.JspTagException:在语言环境 'textv' 的代码 'pl_PL' 下找不到消息

java - 为什么 EL 函数应该来自具有非 void 返回类型的 Java 方法?

richfaces - 如何使用 JSTL 在 JSF 1.2 页面中强制构建阶段?

java - Spring 测试: How to test method secured with @PreAuthorize ("@SecurityPermission.hasPermission(' somepermission')")

java - 查找特定日期某个时间的天数、小时数和分钟数

java - Java中检查密码的方法不起作用

java - JSTL - 是否存在 put-list-attribute 的删除属性?

mysql - jsp jSTL sql查询标签使用声明的变量?

java - 在 CalendarView 类对象上找不到类