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
并将其设置为SpringModelMap
属性
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}">