Question

Est-il possible de préserver le cas des noms de champ GET dans ColdFusion MX 7 (le cas est conservé dans CF9)? J'ai cherché sans relâche pour une réponse, mais toutes les solutions semblent être POST spécifiques, alors que c'est un GET.

N.B.. Je suis conscient du fait que les Etats RFC2616 que les noms de champ HTTP sont insensibles à la casse, mais nous sommes tous conscients comment les spécifications peuvent facilement être dérogé à ...

Exemple:

Étant donné le script suivant ColdFusion (appelons-le url cas-test.cfm ):

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

Et la navigation vers ce script en utilisant le paramètre suivant URL décoré:

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

je reçois la sortie:

NAME1,NAME2,NAME3

Toutes les suggestions sur la façon dont je garde le cas? L'aide serait grandement appréciée.

Était-ce utile?

La solution

Une autre option est d'utiliser getParameterMap () qui renvoie une structure sensible à la casse de paramètres.

<cfset map = getPageContext().getRequest().getParameterMap()>
<cfoutput>#structKeyList(map)#</cfoutput>

Autres conseils

Je pense que la seule chose que vous allez être en mesure de faire est parse la valeur CGI.QUERY_STRING.

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

Ne pas stocker les paramètres d'URL dans une structure en tant que clés, bien que, ou vous perdrez votre cas tout recommencer.

Ceci est évidemment pas idéal, car les valeurs d'URL que vous avez défini via cfparam ou cfset (ou toute autre manipulation façon de l'objet URL) va se perdre.

Quelle version de CF utilisez-vous? Dans ACF9 et Railo 3.3 est certainement le cas préservé.

Je suis un peu changé l'URL de votre échantillon pour des fins de test:

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

Code:

<cfdump var="#url#" />

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

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

ACF9:

entrer image description ici

Railo:

entrer image description ici

Selon ma connaissance, il est impossible. Coldfusion Capitaliser toujours le nom de la clé de la structure. Si la liste ont limité de clés URL créez simplement séparées par des virgules nouvelle liste de clé et passer comme clé URL distincte. Voilà ce que j'avais utilisé avant.

Si vous voulez maintenir cas, vous suffit d'utiliser la notation de tableau pour construire la structure au sein de votre boucle.

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

<cfdump var="#paramStruct#">

Je n'ai pas testé mais je suppose que cela fonctionnera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top