3

我将ColdBoxColdFusion 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");
    }
  }
}
4

2 回答 2

5

将值从处理程序传递到视图有两种主要方法。

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

在你的处理程序中

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

在你看来

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

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

在你的处理程序中

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

在你看来

<cfoutput>#args.id#</cfoutput>
于 2014-06-18T18:44:54.650 回答
1

只需将其设置为PRC。

prc.foo = 1000

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

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

现在,如果您要转发到另一个事件,则必须保留您希望在下一个事件中存在的任何值。

于 2014-06-18T18:28:23.350 回答