我正在使用 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");
}
}
}
答案 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,则必须保留您希望在下一个活动中存在的任何值。