ColdBox - 如何使用setView()调用设置视图和传递参数?

时间:2014-06-18 18:02:47

标签: coldfusion coldbox

我正在使用 ColdBox ColdFusion 10 。我想通过 setView()传递一个参数,说id = 1000。我无法找到传递参数的任何例子。

以下是代码:

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");
    }
  }
}

2 个答案:

答案 0 :(得分:5)

将处理程序中的值传递给视图有两种主要方法。

第一种方法是将值放在私有请求集合中,该集合在处理程序中作为名为“prc”的结构提供。该视图具有相同的“prc”结构。此请求集合可用于整个请求以及为该请求执行的所有布局或视图。

在您的处理程序中

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

在您的视图中

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

如果您想要一个更加封装的方法,只能使该值专门用于该视图,您可以使用event.setView()的“args”参数,并传递将在视图中可用的值的结构在一个名为“args”的结构中。

在您的处理程序中

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

在您的视图中

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

答案 1 :(得分:1)

只需将其设置为PRC。

prc.foo = 1000

设置视图时,您将告诉布局要渲染的视图。 View可以引用在设置之前定义的任何RC或PRC变量。与renderView()和Viewlets相同,只需在它之前定义一个变量或将一些args(struct)定义为参数。

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

现在,如果您是forwarding to another event,则必须保留您希望在下一个活动中存在的任何值。