3

提交表单后,我正在调用一个控制器方法,该方法在我的 cfc 中运行一个 orm EntitySave。我想在通过 ORM 保存数据之前转储参数,以直观地验证这些确实是我想要保存在数据库中的值。所以当我使用这个

<cfthrow message="value = #arguments#">

我得到这个:

Error: Complex object types cannot be converted to simple values.

我了解您不允许对复杂对象执行此操作,因此在这些情况下我会使用<cfdump>但我找不到将<cfthrow>. 我确信有更好的方法来实现这一点。我也尝试过<cfmail>对自己做一个效果惊人的电子邮件,但电子邮件需要一两分钟。任何建议将不胜感激。我目前正在检查 ValidateThis。

4

3 回答 3

13

你可以序列化它:

<cfthrow message="value = #serializeJson(arguments)#">

但我认为你不希望那种东西出现在屏幕上。

如果我是你,我会记录它(所以同样的概念,就在 ,<cflog>之前<cfthrow>,并将参数放在日志条目中,并且<cfthrow>只是简单地解释错误(你还应该使用 TYPE 属性,用于后续处理您提出的异常。

于 2012-10-16T15:02:32.827 回答
1

您可以尝试将其转储到文件中,看看是否满足您的需求,而不是扔掉它:

<cfdump var="#arguments#" output="C:\dump.html" format="html">

如果您需要中止(就像 throw 一样),您可以将 abort 添加到标签的末尾,<cfdump... abort>.

于 2012-10-16T15:06:40.013 回答
0

您可以执行以下操作以使用<cfdump>

<cfsavecontent variable="arguments_dump">
    <cfdump var="#arguments#" />
</cfsavecontent>
<cfthrow message="#arguments_dump#" />

然而,需要更多的代码,并且不如上面亚当卡梅隆的回答那么优雅。

于 2012-10-18T14:54:17.230 回答