Estoy tratando de averiguar si existe una variable url, y si no, asegúrese de que no esté vacía.Coldfusion 8: IsDefined ('URL.variable') y no es ""?
Esto no funciona:
<cfif IsDefined('URL.affiliateId') and is not "">
//
</cfif>
Estoy tratando de averiguar si existe una variable url, y si no, asegúrese de que no esté vacía.Coldfusion 8: IsDefined ('URL.variable') y no es ""?
Esto no funciona:
<cfif IsDefined('URL.affiliateId') and is not "">
//
</cfif>
<cfif structKeyExists(url, 'affiliateID') and trim(url.affiliateID) neq "">...</cfif>
<cfif IsDefined('URL.affiliateId') and URL.affiliateId neq "">
//
</cfif>
Ignorar más espacio en blanco
<cfif IsDefined('URL.affiliateId') and len(trim(URL.affiliateId))>
value is defined and not empty
</cfif>
... o, alternativamente
<cfif IsDefined('URL.affiliateId') and len(trim(URL.affiliateId)) gt 0>
value is defined and not empty
</cfif>
También puede simplificar un poco la lógica usando <cfparam> para asegurarse de que la variable URL siempre exista. A continuación, en lugar de tener 2 condiciones, sólo tiene 1.
<cfparam name="URL.affiliateId" type="string" default="" />
<cfif trim(URL.affiliateId) is not "">
do stuff here
</cfif>
Es cierto. Si la existencia de la variable no afecta negativamente al código existente (no estaba seguro), entonces cfparam puede simplificar las cosas – Leigh
me limitaré a resumir las respuestas y ofrecer mi versión de la misma:
<cfparam name="URL.affiliateId" type="string" default="" />
<cfif len(trim(URL.affiliateId))>
...do something with the affiliate...
</cfif>
No necesita structKeyExists o IsDefined y sería ser mejor para evitarlos Además, no necesita la parte 'mayor que cero' después de 'len()'.
No hay casos de uso perfectamente válidos para todo lo anterior. La preferencia personal, por otro lado, es un asunto diferente. – Leigh
Sí, son válidos pero no necesarios. –
Si bien hay similitudes en el comportamiento, también existen diferencias. Por lo tanto, una afirmación general de que nunca se necesitan es inexacta. No todos proporcionan la funcionalidad _identical_. – Leigh
Todas las respuestas a continuación funcionan, pero FYI structKeyExists() es más eficiente que isDefined(), y len() es más eficiente que NEQ "". Trim() es opcional, pero no es una mala idea incluir eso. – Henry
Creo que una mejor razón para usar structKeyExists() es la precisión. IsDefined() tiene un alcance un poco más amplio, que ocasionalmente puede generar resultados inesperados. – Leigh