0

req の関数に構造体を渡しています。フィールドの検証ですが、最初に構造が空かどうかを確認します。

構造内のすべての要素が空 (空の文字列) の場合、検証のためにこの構造を渡しません。

自分StructIsEmptyの構造を調べてみました。問題は、構造の要素に空の文字列のみが含まれている場合、StructIsEmptyreturn NO. 残念ながら、私はまだCF8を使用しています。

すべての構造要素に空の文字列しかない場合、どうすればStructIsEmpty戻る必要がありますか?YES

    <cfset st_MyStruct=StructNew()>
    <cfset st_MyStruct["InstType"]="#Trim(arr[112])#">
    <cfset st_MyStruct["InstId"]="#Trim(arr[113])#">
    <cfset st_MyStruct["PLN"]="#Trim(arr[115])#">
    <cfset st_MyStruct["PFN"]="#Trim(arr[116])#">
    <cfset st_MyStruct["Referal"]="#Trim(arr[118])#">

    cfif StructIsEmpty(st_MyStruct) NEQ "NO">
      <CFINVOKE component="cfcomponents.ValidateFields" method="CheckReqFields"
                                                        st_MyStruct="#st_MyStruct#"
                                                        Inst="#arguments.Inst#" >    

    </cfif> 
4

2 に答える 2

0

これを 1 行で実行したい場合は、構造体を JSON にシリアライズし、次のように正規表現を使用して空でない文字列値を検索できます。

structIsEmptyStrings = refind(':("[^"]+"|\d+|true|false)', serializeJSON(st_MyStruct)) == 0;

""その正規表現は、空の文字列 ( )、数値、またはブール値 (trueまたは) のいずれでもない値を探していますfalse。構造体の値が文字列、数値、またはブール値以外の型である場合、これは正確ではないことに注意してください (ネストされた配列または構造体はチェックされません)。また、文字列値がスペースのみの場合、これは構造体が空ではないと見なします (これは探しているものではない可能性があります)。

于 2013-10-23T00:44:18.100 に答える