【问题标题】:Enum inside a JSP [duplicate]JSP中的枚举[重复]
【发布时间】:2008-10-02 16:52:21
【问题描述】:

有没有办法在 JSP 中使用枚举值而不使用 scriptlet。

例如

package com.example;

public enum Direction {
    ASC,
    DESC
}

所以在 JSP 中我想做这样的事情

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">...

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    您可以将枚举中的方向的网络友好文本实现为字段:

    <%@ page import="com.example.Direction" %> ... <p>Direction is <%=foo.direction.getFriendlyName()%></p> <% if (foo.direction == Direction.ASC) { %> <p>That means you're going to heaven!</p> <% } %>

    但这混合了视图和模型,尽管对于简单的用途,它可以是独立于视图的(“升序”、“降序”等)。

    除非您不喜欢将 Java 直接放入您的 JSP 页面中,即使用于比较之类的基本操作也是如此。

    【讨论】:

      【解决方案2】:

      我猜可以这样完成

      <c:set var="ASC" value="<%=Direction.ASC%>"/>
      <c:if test="${foo.direction == ASC}"></c:if>
      

      优点是当我们重构时它也会在这里反映出来

      【讨论】:

      • 你为什么取消投票?请评论原因。
      • 如果是因为 JSP 表达式查看接受的答案,他也在使用它
      【解决方案3】:

      您可以简单地将枚举值作为字符串进行检查:

      <c:if test="${foo.direction == 'ASC'}">...
      

      【讨论】:

      • 使用硬编码字符串是个坏主意
      • 避免硬编码字符串。如果你的枚举改变了怎么办?
      • 也许这不是最好的解决方案。但它仍然比 JSP 页面中庞大的 Java 代码要好。
      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 2012-08-31
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2023-03-26
      • 2012-11-16
      相关资源
      最近更新 更多