View comments | RSS feed

cfcase

Description

Used only inside the cfswitch tag body. Contains code to execute when the expression specified in the cfswitch tag has one or more specific values.

Category

Flow-control tags

Syntax

<cfcase 
value = "value or delimited set of values"
delimiters = "delimiter characters">

See also

cfdefaultcase, cfswitch; cfswitch, cfcase, and cfdefaultcase in Elements of CFML in ColdFusion MX Developer's Guide

Attributes

Attribute Req/Opt Default Description

value

Required

 

The value or values that the expression attribute of the cfswitch tag must match. To specify multiple matching values, separate the values with the delimiter character. The value or values must be simple constants or constant expressions, not variables.

delimiter

Optional

, (comma)

Specifies the delimiter character or characters that separate multiple values to match. If you specify multiple delimiter characters, you can use any of them to separate the values to be matched.

Usage

The contents of the cfcase tag body executes only if the expression attribute of the cfswitch tag evaluates to a value specified by the value attribute. The contents of the cfcase tag body can include HTML and text, and CFML tags, functions, variables, and expressions. You do not have to explicitly break out of the cfcase tag, as you do in some languages.

One cfcase tag can match multiple expression values. To do this, separate the matching values with the delimiter character, which is the comma by default. For example the following line matches "red", "blue", or "green":

<cfcase value="red,blue,green">

You can use the delimiter attribute to specify one or more delimiters to use in place of the comma. For example, the following line matches "cargo, live", "cargo, liquid", and "cargo, solid":

<cfcase value="cargo, live;cargo, liquid-cargo, solid" delimiters=";-">

Example

The following example displays a grade based on a 1-10 score. Several of the cfcase tags match more than one score. For simplicity, the example sets the score to 7.

<cfset score="7">
<cfswitch expression="#score#">
   <cfcase value="10">
      <cfset grade="A">
   </cfcase>
   <cfcase value="9;8" delimiters=";">
      <cfset grade="B">
   </cfcase>
   <cfcase value="7;6" delimiters=";">
      <cfset grade="C">
   </cfcase>
   <cfcase value="5;4;" delimiters=";">
      <cfset grade="D">
   </cfcase>
   <cfdefaultcase>
      <cfset grade="F">
   </cfdefaultcase>
</cfswitch>
<cfoutput>
   Your grade is #grade#
</cfoutput>

ColdFusion 9 | ColdFusion 8 | ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX | Forums | Developer Center | KnowledgeBase | Bug Reporting

Version 7

Comments


No screen name said on Feb 9, 2005 at 5:46 AM :
With CF7 it's not allowed anymore to put an <cfbreak /> at the end of each case. Generates an context validation error.
jrunrandy said on Feb 9, 2005 at 7:00 AM :
That is correct. Disallowing cfbreak within cfswitch returns CF to CF 5 and CFMX functionality.

For some reason, it worked in CFMX 6.1.

Also, the cfbreak docs incorrectly state that you can use cfbreak in a cfswitch block (doc bug 59732).
carehart said on Sep 22, 2005 at 2:17 PM :
Folks, the docs here suggest that a CFCASE value can be a constant or a "constant expression". Yet nowhere do I find that term defined in the entire CFMX 7 doc set (indeed, it's used nowhere but here, as I searched).

Some have interpreted the phrase to mean an expression that resolves to a constant (such as #'a'#), but I've found that any attempt to refer to pound signs in a CFCASE value gets an error in CFMX.

What is meant above by constant expression? (I've noticed the CFMX 6.1 docs have the same issue, and have posted this there for those who don't read it here.)
carehart said on Sep 23, 2005 at 8:15 AM :
I need to update my comment above: a constant expression like #'a'# or even #1+1# does indeed work as a CFCASE VALUE in CFMX (though not CF5). When testing it (before making my last comment), I had a different problem that I misinterpreted.

Still, I'll hope that my identification here of what a constant expression is may help others.

That said, I have to say I still don't see why one would ever use one. If any readers ever think of a practical use, I'm sure others would appreciate hearing of it.
seedye said on Nov 23, 2005 at 10:22 AM :
There is an error in the documentation. Where the attribute says "delimiter" it should read "delimiters" as it does in the syntax and the example.

(It's wrong in the CFEclipse syntax definition, too.)

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/coldfusion/7/htmldocs/00000224.htm