0

GETフィールド名の大文字と小文字をColdFusionMX7で保持することはできますか(大文字と小文字はCF9で保持されます)?私はたゆまず答えを探しましたが、これはGETであるのに対し、すべてのソリューションはPOST固有のようです。

注意:RFC2616では、HTTPフィールド名では大文字と小文字が区別されないと記載されていますが、仕様を簡単に逸脱できることは誰もが知っています...

例:

次のColdFusionスクリプト(「 url-case-test.cfm 」と呼びましょう)を考えます。

<html>
    <body>
        <cfoutput>
            #structKeyList(url)#
        </cfoutput>
    </body>
</html>

そして、次のパラメータで装飾されたURLを使用してこのスクリプトに移動します。

http://localhost:8080/cfusion/url-case-test.cfm?name1=value1&name2=value2&name3=value3

出力を取得します:

NAME1,NAME2,NAME3

ケースをどのように保存するかについての提案はありますか?助けていただければ幸いです。

4

5 に答える 5

8

もう1つのオプションは、大文字と小文字を区別するパラメーターの構造を返すgetParameterMap()を使用することです。

<cfset map = getPageContext().getRequest().getParameterMap()>
<cfoutput>#structKeyList(map)#</cfoutput>
于 2011-07-25T16:50:00.100 に答える
5

あなたができることは、CGI.QUERY_STRING値を解析することだけだと思います。

<cfset paramList="" />
<cfloop list="#CGI.QUERY_STRING#" index="qsparam" delimiters="&">
  <cfset paramList=listAppend(paramList,listFirst(qsparam,"=")) />
</cfloop>
<cfoutput>#paramList#</cfoutput>

ただし、URLパラメータをキーとして構造体に格納しないでください。そうしないと、ケースが再び失われます。

cfparamまたはcfset(またはURLオブジェクトの他の方法の操作)を介して設定したURL値は失われるため、これは明らかに理想的ではありません。

于 2011-07-25T13:52:17.193 に答える
3

どのバージョンのCFを使用していますか?ACF9およびRailo3.3の場合、ケースは確実に保持されます。

テスト目的でサンプルURLを少し変更しました。

?nAmE1=ValuE1&name2=value2&name3=value3

コード:

<cfdump var="#url#" />

<cfloop collection="#url#" item="key">
    <cfoutput>#key#<br/></cfoutput>
</cfloop>

<cfoutput>#structKeyList(url)#</cfoutput>

ACF9:

ここに画像の説明を入力してください

Railo:

ここに画像の説明を入力してください

于 2011-07-25T11:44:04.203 に答える
0

私の知る限り、それは不可能です。Coldfusionは常に構造キー名を大文字にします。URLキーのリストが限られている場合は、カンマ区切りの新しいキーリストを作成し、個別のURLキーとして渡します。これは私が以前に使用したものです。

于 2011-07-25T10:03:00.490 に答える
0

大文字と小文字を区別したい場合は、配列表記を使用してループ内に構造体を構築します。

<cfset paramStruct = StructNew()>
<cfloop list = "#CGI.QUERY_STRING#" index="i" delimiters="&">
  <cfset paramStruct[ listFirst(i,"=") ] = listLast(i,"=")>
</cfloop>

<cfdump var="#paramStruct#">

私はこれをテストしていませんが、動作すると思います。

于 2013-08-07T03:57:13.560 に答える