相关疑难解决方法(0)

枚举在JSP中

有没有办法在不使用scriptlet的情况下在JSP中使用Enum值.

例如

package com.example;

public enum Direction {
    ASC,
    DESC
}
Run Code Online (Sandbox Code Playgroud)

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

<c:if test="${foo.direction ==<% com.example.Direction.ASC %>}">...
Run Code Online (Sandbox Code Playgroud)

java jsp jstl

15
推荐指数
2
解决办法
4万
查看次数

在JSP EL枚举值中始终为空

当试图让EL条件工作时,我发现枚举值完全被忽略了.这在我看来与规范相反.

<c:out value='${com.foobar.data.BookingStatus.FAILED}' />
<c:out value='${BookingStatus.FAILED}' />
<c:out value='${com.foobar.data.BookingStatus.failed}' />
<c:out value='${BookingStatus.failed}' />
<c:if test="${empty BookingStatus.FAILED }">empty</c:if>
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这些都评估为.为什么Enum类不被识别?这发生在当前稳定的Tomcat实例中.

这可能是类路径问题吗?Enum在控制器代码中成功使用,但在JSP中没有其他地方使用.它在部署的lib目录中的jar中提供.

更新:

我的目的是将提供的Integer与Enum的属性进行比较,如下所示:

<c:when test='${bookingInformation.bookingStatus eq BookingStatus.FAILED.code}'>
    FOOBARFAIL
</c:when>
Run Code Online (Sandbox Code Playgroud)

不幸的是,被检查的值无法更改,并且仍将是整数.Enum看起来如下(简化):

public enum BookingStatus {

    COMPLETED(0), FAILED(1);

    private final int code;

    private BookingStatus(int code) {
        this.code = code;
    }

    public int getCode() {
        return code;
    }

}
Run Code Online (Sandbox Code Playgroud)

我想避免硬编码FAIL等的Integer值,而是使用enum代替比较.

java enums jsp jstl el

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

jsp ×2

jstl ×2

el ×1

enums ×1