Flex:RemoteObject,传递命名参数

Posted

技术标签:

【中文标题】Flex:RemoteObject,传递命名参数【英文标题】:Flex: RemoteObject, passing named parameters 【发布时间】:2010-12-07 04:53:51 【问题描述】:

我正在使用 Flex 的 RemoteObject 方法调用 ColdFusion cfc 方法。

<fx:Declarations>
    <s:RemoteObject destination="ColdFusion" source="cfc.categoryGateway" id="categoryGateway">
        <s:method name="getCategoryList" result="returnHandler(event)"
                   fault="mx.controls.Alert.show(event.fault.faultString)">
            <s:arguments>
                <orderby>categoryId</orderby>
                <parentCategory>1</parentCategory>
            </s:arguments>
        </s:method>
    </s:RemoteObject>
</fx:Declarations>

我的 cfc 以下列方式接受参数:

<cffunction name="getCategoryList" access="remote" output="false" returntype="query">
    <cfargument name="parentCategory" type="string" required="false" />
    <cfargument name="orderby" type="string" required="false" />
    <!--- code... --->
    <cfreturn qCategoryList />
</cffunction>

所以你可以看到我在调用cfc方法时改变了参数的顺序。但它不起作用。

表示&lt;s:arguments&gt;没有传递named参数。 有什么解决办法吗?正如你所看到的,我可能有一些参数不是强制性的,所以它必须按名称传递。

【问题讨论】:

您确定问题出在 flex 上吗?当 Flex 调用 cfc 方法时,您是否尝试将参数范围转储到文件中以查看其中的内容? 是的,因为当我交换参数时,我在 SQL 查询中收到错误,例如:无法调用 CFC - CFSQLTYPE CF_SQL_INTEGER 的数据类别 ID 无效。 parentCategory 实际上不是字符串参数,而是我在 SQL 查询中使用的整数参数。 如果参数顺序相同,则完美运行。 【参考方案1】:

arguments 参数是一个数组,所以不管你给每个元素取什么名字,我想它还是会按顺序使用。 您可以尝试这样做:

<s:RemoteObject destination="ColdFusion" source="cfc.categoryGateway" id="categoryGateway">
        <s:method name="getCategoryList" result="returnHandler(event)"
                  fault="mx.controls.Alert.show(event.fault.faultString)" />
    </s:RemoteObject>

然后调用:

categoryGateway.getCategoryList(orderby:'categoryId', parentCategory:'1');

【讨论】:

以上是关于Flex:RemoteObject,传递命名参数的主要内容,如果未能解决你的问题,请参考以下文章

Flex RemoteObject 间歇性地无法调用 CFC

没有 services-config.xml 的 Flash RemoteObject Weborb 连接(没有 Flex)

我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。

ActionScript Worker 中的 RemoteObject 类别名

为什么这个函数重命名作为参数传递的LinkedList节点?

Flex:传递函数和检查参数