JSPでswitch文のように条件分岐する方法 ― JSTLのx:chooseタグ徹底解説
JSTLのXMLタグライブラリに含まれる<x:choose>タグは、Javaのswitchステートメントとまったく同じように動作します。このタグを使うことで、複数の選択肢の中から条件に合致する処理を選択して実行できます。
switchステートメントにおけるcase句に相当するのが<x:when>タグです。また、switchステートメントのdefault句(どのcaseにも当てはまらなかった場合のデフォルト処理)に相当する役割を果たすのが、<x:otherwise>タグです。
x:choose・x:when・x:otherwiseタグの属性
<x:choose>タグには、属性は一切ありません。
<x:when>タグには、後述のとおり1つの属性が用意されています。
<x:otherwise>タグには、属性は一切ありません。
x:whenタグの属性一覧
| 属性 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
| select | 評価対象となる条件式(XPath式) | はい | なし |
x:chooseタグの使用例
以下は、XML形式の書籍データを解析し、著者名に応じて表示内容を切り替えるサンプルです。
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "x" uri = "https://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:choose タグ</title>
</head>
<body>
<h3>書籍情報:</h3>
<c:set var = "xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<x:parse xml = "${xmltext}" var = "output"/>
<x:choose>
<x:when select = "$output//book/author = 'ZARA'">
Book is written by ZARA
</x:when>
<x:when select = "$output//book/author = 'NUHA'">
Book is written by NUHA
</x:when>
<x:otherwise>
Unknown author.
</x:otherwise>
</x:choose>
</body>
</html>実行結果
上記のコードを実行すると、次のような結果が表示されます。
Books Info: Book is written by ZARA
この例では、<x:parse>タグで変数xmltext内のXMLデータを解析し、その結果をoutput変数に格納しています。続く<x:choose>ブロックでは、XPath式を使って著者名を判定し、最初に条件が成立した<x:when>の本文だけが出力されます。どの条件も満たさない場合は、<x:otherwise>の内容が表示される仕組みです。
-
JavaScriptのswitchステートメント内でreturnを使う方法|サンプルコード付きで解説
switchステートメント内でreturnステートメントは使えるのか?結論から言うと、switchステートメントが関数の中にある場合は、returnステートメントを含めることができます。returnが実行されると、その時点で関数の処理が終了し、switchステートメントで指定された値が呼び出し元へ返されます。そのため、switchステートメントより後ろに記述したコードは実行されません。さらに、returnは関数自体を抜ける働きを持つため、各caseの末尾にbreakステートメントを記述する必要がない点も見逃せません。breakの書き忘れによる意図しないフォールスルー(次のcaseへの処理の漏れ
-
JavaScriptの「for...in」ステートメントとは?オブジェクトのプロパティをループ処理する方法を解説
JavaScriptのfor...in文は、オブジェクトが持つすべてのプロパティ(列挙可能なプロパティ)を順番に取り出して処理するためのループ構文です。オブジェクト内の各キー(プロパティ名)にアクセスしながら、対応する値を取得したい場合に非常に便利です。for...inの基本的な構文for (let 変数名 in オブジェクト) { // 各プロパティに対して実行したい処理 }ループ変数には、各反復ごとにオブジェクトのプロパティ名(キー)が文字列として代入されます。値そのものを取得するには、「オブジェクト[変数名]」のようにブラケット記法を使ってアクセスします。サンプルコード以下は、for