2014-06-18 30 views
3

我正在使用ColdBoxColdFusion 10。我想通過一個說法id = 1000與setView()。我找不到任何參數正在傳遞的示例。ColdBox - 如何使用setView()調用設置視圖和傳遞參數?

下面是代碼:

component { 
// Dependency Injection 
property name="requestService" inject="RequestService"; 

function index(event, rc, prc) {   
    var response = requestService.save(rc); 

    if(response.Success EQ true) { 
     event.setView(view="requests/success"); //Want to pass a param(int) 
    } else { 
     event.setView("requests/failure"); 
    } 
    } 
} 

回答

5

有兩種主要方法可以將值從處理程序傳遞到您的視圖。

第一種方法是將值放入私有請求集合中,該集合在處理程序中作爲名爲「prc」的結構提供。該視圖具有與其相同的「prc」結構。該請求集合可用於整個請求以及爲該請求執行的所有佈局或視圖。

在你的處理器

prc.id = 1000; 
event.setView(view="requests/success"); 

在你看來

<cfoutput>#prc.id#</cfoutput> 

如果你想要一個更封裝的辦法,不僅使提供給該視圖的價值而言,你可以使用「args」參數傳遞給event.setView()並傳遞一個值結構,該值將在視圖中的一個名爲「args」的結構中可用。

在你的處理器

event.setView(view="requests/success", args={ id = 1000 }); 

在你看來

<cfoutput>#args.id#</cfoutput> 
+1

這也許值得一提的是,這是最好使用'prc'而不是'rc'現在可用的內容。 – jinglesthula

+0

謝謝你指出。我更新了答案以反映prc的使用,而不是rc。 –

1

只需設置入中國。

prc.foo = 1000

當你設置一個視圖,你告訴佈局呈現什麼景觀。視圖可以引用在設置之前定義的任何RC或PRC變量。與renderView()和Viewlets一樣,只需在它之前定義一個變量或定義一些參數(結構)作爲參數。現在

#renderView(view='forms/universal',args={type='new',action='user.create'})#

,如果你是forwarding to another event,你必須堅持你想在接下來的活動中存在的任何值。