2015-05-21 1 views
1

У меня есть страница (форма) настроить так:ColdFusion Ссылка на предыдущую страницу Очищает только что переменный Page Session

<cfif not structKeyExists(session, "checkout")> 
    <cflocation url="ownerInfo.cfm" addToken="false"> 
</cfif> 

<cfif not structKeyExists(session.checkout, "vehicle")> 
    <cfset session.checkout.vehicle = {ownership=""} 

<cfparam name="form.ownership" default="#session.checkout.vehicle.ownership#"> 

<cfif structKeyExists(form, "submit")> 

    <cfset errors = []> 
    <cfif not arrayLen(errors)> 
     <cfset session.checkout.vehicle = {ownership=form.ownership} 
     <cflocation url="ownerCheck.cfm" addToken="false"> 
    </cfif> 
</cfif> 

Я пытаюсь выяснить, как я могу сбросить эту форму, имея ссылку на другая страница, когда эта страница будет привязана к ней, сбросит все переменные сеанса до нуля, чтобы снова заполнить всю страницу.

Это то, что я пробовал, но не увенчался успехом.

<cfif session.checkout.vehicle.ownership != null /> 
    <cfset session.checkout.vehicle.ownership = null /> 
</cfif> 

Я не могу использовать <cfset StructClear(Session)>, потому что я не хочу, чтобы все переменные сессии очистили от предыдущих страниц только хочу эту страницу, чтобы сбросить. (Не все страницы или все переменные сессии). Любая помощь с этим будет принята с благодарностью!

+0

Почему вы ставите значения формы в сеанс? Посмотрите на это, чтобы лучше понять Области, доступные для CF. http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09af4-7ff1.html – Elijah

+0

Что значит u? –

+0

im, помещая их в переменные сеанса, чтобы я мог предварительно заполнить формы PDF с ними –

ответ

0

можно сделать с помощью structDelete (структура, ключ)

<cfif session.checkout.vehicle.ownership != null /> 
    <cfset structDelete(session.checkout.vehicle,'ownership ')> 
</cfif> 
+0

Это не работает Неверная конструкция CFML, найденная в строке 5 в столбце 42. ColdFusion смотрел следующий текст: ! –

+0

См. Редактирование. ' Leeish

+0

Thanks Leeish .. –

0

Если вы хотите, чтобы очистить переменные области видимости сеанса, если ключ ownership уже существует в рамках сеанса, то вы можете сделать:

<cfif structKeyExists(session.checkout.vehicle, "ownership")> 
    <!--- struct key exists so delete it ---> 
    <cfset structDelete(session.checkout.vehicle, "ownership")> 
</cfif> 

Вы на самом деле можете просто сделать:

<cfif structKeyExists(session.checkout, "vehicle")> 
    <!--- try and delete ownership key might not exist ---> 
    <cfset structDelete(session.checkout.vehicle, "ownership")> 
</cfif> 

пока родительского SCO pe существует, вы можете попробовать и удалить ключ ownership без предварительной проверки его наличия.

Если вы хотите знать, существует ли ключ, то structDelete принимает третий логический параметр, поэтому он вернет true, если он существует, и false, если он не был.

<cfset didExist = structDelete(session.checkout.vehicle, "ownership", true)> 

Альтернативный подход к решению проблемы заключается в том, чтобы сбросить форму, если она не является формой (POST). Таким образом, вы бы сделали:

<cfif structKeyExists(form, "submit")> 
    <!--- form has been submitted store values in session and redirect... --> 
<cfelse> 
    <!--- form not submitted so clear the session vars... ---> 
</cfif> 
+0

Есть ли специальное место, которое мне нужно вставить? или он может быть просто вставлен на самый верх? –

+0

это ломается в первый раз около –

+0

, он не будет идти дальше этой страницы, потому что он делает право собственности до того, как он перейдет на следующую страницу. Я полагаю, что –

Смежные вопросы