2011-01-06 2 views
4

, если я используюColdFusion игнорирует неопределенные переменные

<cfoutput>#somevariable#</cfoutput> 

и somevariable не определен Я получаю сообщение об ошибке, как я могу предотвратить ошибку от occourring? Есть ли простой способ реализации условного, который не требует кучу дополнительных строк?

ответ

11
<cfparam name="somevariable" default="" /> 

Если вы на ср 9 вы можете использовать трехкомпонентную операцию, но cfparam более «лучший practicey».

#isDefined("somevariable") ? somevariable : 'default string'# 
+0

удивительный, спасибо! – Daniel

+1

Если вы собираетесь использовать тернарный оператор, я бы рекомендовал 'structkeyexists (scope," somevariable ")', а не 'isdefined'. Быстрее искать только область, в которой вы ожидаете, что переменная будет определена, и не позволяет CF извлекать переменную из другой области. Если вы используете 'isdefined', по крайней мере, укажите область с переменной (которую должен был сделать и OP). –

1

Вы можете проверить переменную

<cfoutput> 
    <cfif isDefined("somevariable")> 
     #somevariable# 
    <cfelse> 
     handle default scenario here 
    </cfif> 
</cfoutput> 

или вы можете использовать встроенный условный

<cfoutput> 
    #IIF(isDefined("somevariable"),de(somevariable),de(""))# 
</cfoutput> 
Смежные вопросы