gpt4 book ai didi

coldfusion - 验证对象的方法是否存在

转载 作者:行者123 更新时间:2023-12-03 17:31:00 24 4
gpt4 key购买 nike

我通过 ColdFusion 调用一个 web 服务,它返回一个对象,我想验证这个对象的方法之一是否存在,因为它并不总是存在。

我找到了 this source这似乎很有希望,但是根据我的测试,我可以看到结果总是负面的,并且在明显存在时永远找不到该方法。

<cfif structKeyExists("#Result.getNotifications().getValidationResult(0)#","getField")>
Result是我的底层对象,我的最终目标是验证方法 getField()存在。

enter image description here

有没有一种干净的方法来做到这一点而不是尝试/捕获?

最佳答案

更新:

不幸的是,我不确定 IsInstanceOf()使用 Web 服务,因为 CF 使用 Proxy 对象来“包装”底层 Web 服务类。如果没有,另一个简单的选择是检查类名。这避免了只检查方法名称的歧义(这可能存在于许多不同的类中)。另外我怀疑它可能比 IsInstanceOf() 更轻反正。

<cfif compare(yourObject.getClass().name, "org.tempuri.ValidationResultField") eq 0>
Found ValidationResultField. do something
</cfif>

看起来转储包含几种不同类型的对象/类: ArrayOfValidationResult , ValidationResultField ,等等。听起来您真正想要确定的是您正在使用哪些类,因此您可以根据 Web 服务定义确切地知道哪些字段和方法可用。鉴于此,我认为 IsInstanceOf()将是一个更合适的测试,而不是检查方法名称。也更准确。没有什么可以阻止两个不同的类具有相同的方法名称。因此,即使方法 X 或 Y 存在,它仍然有可能是与预期不同的类。
<cfif IsInstanceOf(yourObject, "org.tempuri.ValidationResultField")>
do something
</cfif>

关于coldfusion - 验证对象的方法是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40139521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com