Java 比较JSP中的枚举值

Java 比较JSP中的枚举值,java,spring,enums,jstl,Java,Spring,Enums,Jstl,我创建了一个enum,它看起来像: public enum BtsMode { PROJECT_BTS("project_bts"), SERVICE_BTS("service_bts"); private String mode; private BtsMode(String mode) { this.mode = mode; } public String getMode() { return mode;

我创建了一个
enum
,它看起来像:

public enum BtsMode {
    PROJECT_BTS("project_bts"), SERVICE_BTS("service_bts");

    private String mode;

    private BtsMode(String mode) {
        this.mode = mode;
    }

    public String getMode() {
        return mode;
    }

    public static BtsMode getBtsMode(Integer projectId) {
        return projectId == 0 ? BtsMode.SERVICE_BTS : BtsMode.PROJECT_BTS;
    }
};
此枚举是包含其他应用程序级常量的类的一部分。 基于
projectId
值,我在
Spring/java
应用程序中执行其他操作。在UI方面,我希望使用相同的
enum
来比较
BtsMode
类型和do操作。我搜索过网络,发现我可以迭代
enum
并进行比较,但我必须检查具体的
BtsMode
类型

使用
getBtsMode()
方法,我获得适当的
BtsMode
并将其设置为Spring
ModelMap
属性

BtsMode btsMode = BtsMode.getBtsMode(projectId);
modelMap.addAttribute("curBtsMode", btsMode);
在JSP中,我想根据
BtsMode
显示和隐藏内容。像这样的,

<c:choose>
    <c:when test="${curBtsMode eq BtsMode.PROJECT_BTS}">
        <%-- Display elements specific to PROJECT_BTS --%>          
    </c:when>
    <c:when test="${curBtsMode eq BtsMode.SERVICE_BTS}">
        <%-- Display elements specific to SERVICE_BTS --%>          
    </c:when>
</c:choose>
并在JSP中访问:

<c:if test="${curBtsMode eq projBtsMode}">


这很好,但如果有更好的解决方案,我将非常感激。

尝试使用一个简单的字符串:

<c:when test="${curBtsMode  == 'PROJECT_BTS'}">
    <%-- Display elements specific to PROJECT_BTS --%>          
</c:when>
<c:when test="${curBtsMode == 'SERVICE_BTS'}">
    <%-- Display elements specific to SERVICE_BTS --%>          
</c:when>

尝试使用一个简单的字符串:

<c:when test="${curBtsMode  == 'PROJECT_BTS'}">
    <%-- Display elements specific to PROJECT_BTS --%>          
</c:when>
<c:when test="${curBtsMode == 'SERVICE_BTS'}">
    <%-- Display elements specific to SERVICE_BTS --%>          
</c:when>

只要您使用的是至少3.0版的EL,就可以按如下方式将常量导入页面:

<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
JSP:


只要您使用的是至少3.0版的EL,就可以按如下方式将常量导入页面:

<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
JSP:



谢谢你的建议,我认为它是第一选择,而且很有效,但我认为它超出了使用常量或枚举的目的。但是,尽管它可以解决我将投票表决的问题,但我仍然觉得可能有更好的解决办法。谢谢!:)我承认我现在的答案有点违背枚举逻辑。我通常用一点涂鸦来回避这个问题。像这样的一点涂鸦不会有什么坏处(太多:))谢谢你的建议,我认为它是第一选择,而且很有效,但我认为它超出了使用常量或枚举的目的。但是,尽管它可以解决我将投票表决的问题,但我仍然觉得可能有更好的解决办法。谢谢!:)我承认我现在的答案有点违背枚举逻辑。我通常用一点涂鸦来回避这个问题。像这样的小涂鸦不会有什么害处(太多:)
<c:when test="${dp.status.valid}">