Coldfusion 检查isStruct或isSimpleValue后获取错误复杂对象错误

Coldfusion 检查isStruct或isSimpleValue后获取错误复杂对象错误,coldfusion,Coldfusion,我有一个代码显示消息,如果上传过程失败。消息变量可以是结构或字符串。我添加了代码来检查结果是一个结构还是一个简单的值,但仍然会出现复杂的对象错误。有什么我错过的吗 这是我的密码: if (isStruct(result)) { if(StructKeyExists(result, 'messages')){ theMessage = result.messages; } }else{ if(IsSimpleValue(result)){ t

我有一个代码显示消息,如果上传过程失败。消息变量可以是结构或字符串。我添加了代码来检查结果是一个结构还是一个简单的值,但仍然会出现复杂的对象错误。有什么我错过的吗

这是我的密码:

if (isStruct(result)) {
    if(StructKeyExists(result, 'messages')){
        theMessage = result.messages;
    }
}else{
    if(IsSimpleValue(result)){
        theMessage = result;
    }
}
FormMessage=getLang('CVLizerUploadFailed') & ' ' & getLang('PleaseContactYourAdmin') & ', ' & getLang('ErrorCode') & ' ' & theMessage;

首先,让我们简化您的代码,如下所示。它可以进一步简化,具体取决于前面的代码,您需要查找它。下面的代码将检查结果变量的类型,并根据类型设置消息变量的值

 if (isStruct(result) AND StructKeyExists(result, 'messages')) {            
      theMessage = result.messages;                
   }
   else if (isSimpleValue(result){
      theMessage = result;                   
   }
您编写的代码或简化的代码没有问题。我不能肯定最后一行代码是否有错误,因为我没有足够的信息


当结果是一个结构和一个变量时,在两种情况下,在if条件代码块的正下方和正上方使用writedump和abort,以在发生错误时进行检查。它可能是这段代码上面的最后一行或任何其他代码行。

我检查了变量,结果发现之前从函数返回的变量是一个结构,它应该是一个字符串(因此result.messages是一个结构,而不是字符串)。谢谢你简化了我的代码。