Evaluates
a passed expression and passes control to the cfcase tag
that matches the expression result. You can, optionally, code a cfdefaultcase tag, which
receives control if there is no matching cfcase tag
value.
Flow-control tags
<cfswitch
expression = "expression">
one or more cfcase tags
zero or one cfdefaultcase tags
</cfswitch>
cfcase, cfdefaultcase, cfabort, cfloop, cfbreak, cfexecute, cfexit, cfif, cflocation, cfrethrow, cfthrow, cftry; cfswitch, cfcase,
and cfdefaultcase in the Developing ColdFusion Applications
ColdFusion
8: Changed the way the ColdFusion parses <cfcase> values.
Previously, <cfcase> tags with numeric value
dates did not return expected results. For example, <cfcase value="00"> and <cfcase value="0A> were
both evaluated to 0. The value "0A" was treated
as a date and converted to 0 number of days from 12/30/1899. The
value "00" was also evaluated to the value 0. This caused the exception
“Context validation error for tag CFCASE. The CFSWITCH has a duplicate
CFCASE for value "0.0".” The <cfswitch> tag
now returns the expected result.
ColdFusion MX: Changed cfdefaultcase tag
placement requirements: you can put the cfdefaultcase tag
at any position within a cfswitch statement; it
is not required to be the last item.
Attribute |
Req/Opt |
Default |
Description |
|---|---|---|---|
|
Required |
|
ColdFusion expression that yields a scalar
value. ColdFusion converts integers, real numbers, Booleans, and
dates to numeric values. For example, |
This tag
requires an end tag. All code within this tag must be within a cfcase or cfdefaultcase tag.
Otherwise, ColdFusion throws an error.
Use this tag followed
by one or more cfcase tags. Optionally, include
a cfdefaultcase tag. This tag selects the matching
alternative from the cfcase and cfdefaultcase tags,
jumps to the matching tag, and executes the code between the cfcase start
and end tags.
The cfswitch tag provides better
performance than a series of cfif/cfelseif tags,
and the code is easier to read.
<!---
This example shows the use of cfswitch and cfcase to
exercise a case statement in CFML.
--->
<cfquery name = "GetEmployees" dataSource = "cfdocexamples">
SELECT Emp_ID, FirstName, LastName, EMail, Phone, Department
FROM Employees
</cfquery>
<h3>cfswitch Example</h3>
<!--- By outputting the query and using cfswitch, we classify the
output without using a cfloop construct. --->
<p>Each time the case is fulfilled, the specific information is printed;
if the case is not fulfilled, the default case is output </p>
<cfoutput query="GetEmployees">
<cfswitch expression="#Trim(Department)#">
<cfcase value="Sales">
#FirstName# #LastName# is in <b>sales</b><br><br>
</cfcase>
<cfcase value="Accounting">
#FirstName# #LastName# is in <b>accounting</b><br><br>
</cfcase> <cfcase value="Administration">
#FirstName# #LastName# is in <b>administration</b><br><br>
</cfcase>
<cfdefaultcase>
#FirstName# #LastName# is not in Sales, Accounting, or
Administration.<br><br>
</cfdefaultcase>
</cfswitch>
</cfoutput>