JSPのEL式で条件分岐する方法を完全解説!初心者でもわかる三項演算子の使い方
生徒
「JSPのEL式で条件分岐をしたいのですが、if文みたいなのは書けないんですか?」
先生
「JSPのEL式では、三項演算子という構文を使って、if文のような条件分岐を簡潔に書くことができます。」
生徒
「三項演算子って難しそうです…。初心者でも使えますか?」
先生
「使い方はとてもシンプルですよ。EL式の三項演算子の基本から、実用的なサンプルまで一緒に学んでいきましょう!」
1. JSPのEL式とは?条件分岐の前に基礎をおさらい
「1. JSPのEL式とは?条件分岐の前に基礎をおさらい」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
JSP(JavaServer Pages)は、Javaを使って動的なHTMLページを生成するためのテンプレート技術です。EL式(Expression Language)は、Javaオブジェクトの値をJSP内で簡単に参照するための記述方法です。
例えば、user.nameやrequestScope.userなどの値を、Javaコードを書かずに${user.name}のように出力できます。
このEL式には、三項演算子を使った条件分岐の機能も備わっており、JSP内でif文の代わりとして利用されます。
2. JSPのEL式で使える三項演算子の基本構文
三項演算子の基本的な書き方は以下の通りです。
${条件 ? 真の値 : 偽の値}
この構文は、Javaの三項演算子とほぼ同じで、条件がtrueであれば「真の値」が表示され、falseであれば「偽の値」が表示されます。
例えば、ログインユーザーが管理者かどうかを判定して表示を変えるときには次のように書きます。
${user.role == 'admin' ? '管理者ページ' : '一般ユーザー画面'}
3. EL式で三項演算子を使ったサンプルと出力例
それでは、簡単なサンプルを使って実際に三項演算子の使い方を確認してみましょう。以下はisLoginというフラグに応じて表示内容を変えるJSPコードです。
<%-- ログイン状態をリクエストスコープにセットしていると仮定 --%>
<p>${isLogin ? 'ようこそ、ログイン中です!' : 'ログインしてください。'}</p>
出力例:
ようこそ、ログイン中です!
このように、三項演算子はJSP内で簡潔に条件分岐を実装できる非常に便利な仕組みです。
4. JSTLのifタグとEL式の三項演算子の違い
「4. JSTLのifタグとEL式の三項演算子の違い」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
JSPには、JSTL(JSP Standard Tag Library)の<c:if>タグを使った条件分岐もありますが、こちらはブロック的に条件分岐を記述するため、HTML構造ごと切り替えたいときに便利です。
一方で、EL式の三項演算子は、値そのものを条件で切り替えたいときに向いています。
<c:if test="${user.age >= 20}">
お酒が飲めます
</c:if>
このように複数行で分岐したいときにはJSTLタグ、1行で切り替えたいときにはEL式の三項演算子を使い分けるのがポイントです。
5. EL式の三項演算子とnullチェックの組み合わせ
EL式の三項演算子は、nullチェックと組み合わせることで、存在しない値への安全なアクセスも実現できます。
以下は、user.nicknameが空かどうかで表示を切り替える例です。
${empty user.nickname ? 'ニックネーム未設定' : user.nickname}
empty演算子は、変数がnullまたは空であればtrueを返すため、null安全な条件分岐を実現できます。
6. 数値による条件分岐をEL式で書いてみよう
数値の条件によってメッセージを切り替える場合も三項演算子は有効です。以下は年齢に応じたメッセージの切り替え例です。
${user.age >= 65 ? 'シニア割引対象' : '通常料金'}
このように、年齢・金額・在庫数など数値条件に対する条件分岐にも三項演算子は柔軟に対応できます。
7. boolean型との組み合わせでより直感的に
「7. boolean型との組み合わせでより直感的に」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。
boolean型のフラグに基づいて表示内容を切り替えるのは、三項演算子のもっとも基本的な用途です。
例えば、管理者かどうかを判定する場合は以下のように記述します。
${user.admin ? '管理者専用ページへ' : '一般ページへ'}
EL式は、boolean型を自動的に判定してくれるため、== trueなどと書かなくても構いません。
8. 三項演算子を複雑にネストしすぎないように注意
三項演算子はシンプルに条件を分けられる一方で、ネスト(入れ子)して使うと可読性が大幅に下がるというデメリットがあります。
以下のようなコードは避けたほうがよいでしょう。
${user.age >= 65 ? 'シニア' : user.age >= 20 ? '大人' : '未成年'}
複雑な条件はJSTLの<c:choose>タグで記述したほうが読みやすくなります。適材適所で使い分けることが重要です。
9. JSPの三項演算子を活用したテンプレート例
以下は、三項演算子を使ってユーザー情報を表示するテンプレート例です。
<p>ようこそ、${empty user.name ? 'ゲスト' : user.name}さん</p>
<p>ステータス:${user.vip ? 'VIP会員' : '一般会員'}</p>
<p>メール認証:${user.emailVerified ? '完了' : '未認証'}</p>
このように三項演算子をうまく使うことで、HTMLタグの中で動的に表示を切り替える柔軟なJSPテンプレートが実現できます。