さらに2つの可能性があります。
JSP EL 3.0定数
ELのバージョン3.0以降を使用している限り、次のようにして定数をページにインポートできます。
<%@ page import="org.example.Status" %>
<c:when test="${dp.status eq Status.VALID}">
ただし、一部のIDE(IntelliJなど)はまだこれを理解していません。そのため、タイプミスを行っても、実行時まで警告は表示されません。
これは、適切なIDEサポートを取得した後の私の推奨方法です。
ヘルパーメソッド
あなたの列挙型にゲッターを追加するだけです。
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を格納する変数がnullになる可能性がある場合にも注意してください。コードがnullでないことを保証していない場合は、最初にそれを確認する必要があります。
<c:when test="${not empty db.status and dp.status.valid}">
enumを使用する必要がある各ページで中間値を設定する必要があるため、この方法はJSPで中間値を設定する方法よりも優れていると思います。ただし、このソリューションでは、ゲッターを1回宣言するだけで済みます。