【发布时间】:2018-03-08 08:52:21
【问题描述】:
我创建了一个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 类型并进行操作。网上搜了一圈,发现可以遍历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>
我不想使用 scriptlet,因为我们不会在我们的应用程序中使用它们。有没有其他方法可以做到这一点?
临时解决方案
目前,由于 BtsMode 枚举只有两个值,我可以通过在 modelMap 中设置来使用它:
modelMap.addAttribute("projBtsMode", BtsMode.PROJECT_BTS);
modelMap.addAttribute("serviceBtsMode", BtsMode.SERVICE_BTS);
并在 JSP 中访问:
<c:if test="${curBtsMode eq projBtsMode}">
这很好用,但如果有更好的解决方案,我将不胜感激。
【问题讨论】: