【问题标题】:ColdBox - How can set a view and pass-on parameters with setView() call?ColdBox - 如何使用 setView() 调用设置视图和传递参数?
【发布时间】:2017-09-07 03:23:39
【问题描述】:

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

【问题讨论】:

    标签: coldfusion coldbox


    【解决方案1】:

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

    第一个是将值放在私有请求集合中,该集合在处理程序中作为称为“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>
    

    【讨论】:

    • 可能值得一提的是,现在可以使用prc 而不是rc
    • 感谢您指出这一点。我更新了答案以反映 prc 而不是 rc 的使用。
    【解决方案2】:

    只需将其设置为PRC。

    prc.foo = 1000

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2012-09-24
      相关资源
      最近更新 更多