นี่คือความเป็นไปได้อีกสองประการ:
ค่าคงที่ JSP EL 3.0
ตราบใดที่คุณใช้ EL เวอร์ชัน 3.0 เป็นอย่างน้อยคุณสามารถนำเข้าค่าคงที่ลงในเพจของคุณได้ดังนี้:
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
อย่างไรก็ตาม IDE บางคนยังไม่เข้าใจสิ่งนี้ (เช่นIntelliJ ) ดังนั้นคุณจะไม่ได้รับคำเตือนใด ๆ หากคุณพิมพ์ผิดจนกว่าจะรันไทม์
นี่เป็นวิธีที่ฉันต้องการเมื่อได้รับการสนับสนุน IDE ที่เหมาะสม
วิธีการช่วยเหลือ
คุณสามารถเพิ่ม getters ลงใน enum ของคุณได้
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;
}
}
จากนั้นใน JSP ของคุณ:
<c:when test="${dp.status.valid}">
สิ่งนี้ได้รับการสนับสนุนใน IDE ทั้งหมดและจะใช้งานได้เช่นกันหากคุณยังไม่สามารถใช้ EL 3.0 ได้ นี่คือสิ่งที่ฉันทำในขณะนี้เพราะมันทำให้ตรรกะทั้งหมดรวมอยู่ใน enum ของฉัน
ระวังด้วยว่าตัวแปรที่จัดเก็บ enum เป็นโมฆะ คุณจะต้องตรวจสอบก่อนหากรหัสของคุณไม่รับประกันว่าจะไม่เป็นโมฆะ:
<c:when test="${not empty db.status and dp.status.valid}">
ฉันคิดว่าวิธีนี้ดีกว่าวิธีที่คุณตั้งค่าตัวกลางใน JSP เพราะคุณต้องทำเช่นนั้นในแต่ละหน้าซึ่งคุณต้องใช้ enum อย่างไรก็ตามด้วยวิธีนี้คุณจะต้องประกาศ getter เพียงครั้งเดียว