Berikut dua kemungkinan lagi:
Konstanta JSP EL 3.0
Selama Anda menggunakan setidaknya versi 3.0 dari EL, Anda dapat mengimpor konstanta ke halaman Anda sebagai berikut:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
Namun, beberapa IDE belum memahami hal ini (mis. IntelliJ ) sehingga Anda tidak akan mendapatkan peringatan jika salah ketik, hingga runtime.
Ini akan menjadi metode pilihan saya setelah mendapat dukungan IDE yang tepat.
Metode Pembantu
Anda bisa menambahkan getter ke enum Anda.
public enum Status {
VALID("valid"), OLD("old");
private final String val;
Status(String val) {
this.val = val;
}
public String getStatus() {
return val;
}
public boolean isValid() {
return this == VALID;
}
public boolean isOld() {
return this == OLD;
}
}
Kemudian di JSP Anda:
<c:when test="${dp.status.valid}">
Ini didukung di semua IDE dan juga akan berfungsi jika Anda belum dapat menggunakan EL 3.0. Inilah yang saya lakukan saat ini karena itu membuat semua logika tetap terbungkus dalam enum saya.
Juga berhati-hatilah jika memungkinkan untuk variabel yang menyimpan enum menjadi null. Anda perlu memeriksanya terlebih dahulu jika kode Anda tidak menjamin bahwa itu bukan null:
<c:when test="${not empty db.status and dp.status.valid}">
Saya pikir metode ini lebih unggul daripada metode di mana Anda menetapkan nilai perantara di JSP karena Anda harus melakukannya di setiap halaman di mana Anda perlu menggunakan enum. Namun, dengan solusi ini Anda hanya perlu mendeklarasikan pengambil satu kali.