2010-02-25 14 views

Respuesta

29

Hay dos opciones.

La primera es utilizar cfparam para definir un valor predeterminado, por ejemplo:

<cfparam name="url.varname" type="string" default="" /> 

Esto asegura que siempre se puede hacer referencia a url.varname

La segunda es utilizar isDefined o structKeyExists para probar la presencia de la variable:

<cfif isDefined("url.varname") and url.varname eq 42> do something </cfif> 

o

<cfif structKeyExists(url, "varname") and url.varname eq 42> do something </cfif> 
+2

una forma más de CF9: isNull (url.varname) – Henry

+1

Un buen truco con CFPARAM es sólo para usar name = "code" en lugar de name =" url.varname "- luego validará que varname existe como una var url o una var var. Hace que cambiar entre GET y POST sea fácil. – kevink

+7

@kevink, ese es un camino peligroso para bajar. Si la variable no está definida en los alcances de URL o FORM, CFParam lo creará en el ámbito VARIABLES. Hay efectos secundarios significativos pero matizados de esto, y realmente necesita estar al tanto de lo que realmente está sucediendo para asegurar la confiabilidad de su aplicación. –

1

He utilizado este enfoque en muchos lugares.

En la parte superior de la página:

<cfparam name="request.someVal" default="request.defaultVal"> 

Más adelante en la etiqueta de la página o la costumbre, para comprobar el valor de la variable request.someVal, sin temor a que chocar, ya que tiene un valor por defecto.

<cfif ("request.someVal" eq "something")> 
    ... 
</cfif> 
. 
. 
. 
+0

Esto funcionó para mí, especialmente porque quiero que mi página tenga un comportamiento predeterminado para las ocasiones en que no hay valores de cadena de consulta. – Ectropy

0

En <cfscript>, puede

param url.varname; // throws error if it does not exist 

param url.varname = ""; // sets value it was not already set 
Cuestiones relacionadas