2009-02-26 5 views
10

Je dois perdre la tête.Valeur manquante dans form.fieldnames dans ColdFusion

<cfif cgi.request_method eq "POST"> 
    <cfoutput> 
     Form.fieldnames = #form.fieldnames#<br> 
     structKeyList(form) = #structKeyList(form)# 
    </cfoutput> 
</cfif> 

<form method="post" accept-charset="utf-8"> 

    <input type="text" name="graduation_date" value="x"><br> 
    <input type="text" name="foo" value="y"><br> 
    <input type="text" name="bar" value="z"><br> 

    <input type="submit" value="Submit Form" > 

</form> 

La variable form.fieldnames devrait inclure une liste des domaines soumis: foo, bar et graduation_date. Mais graduation_date est manquant. Après un peu plus de tests, je vois que tout ce qui se termine par _date est exclu de form.fieldnames.

J'allais demander quel est le problème avec mon code, mais maintenant je suis assez convaincu que c'est un bug dans ColdFusion. (Je suis sur ColdFusion 8.0.1/OS X 10.5.6.)

C'est un bug dans ColdFusion, non?

Répondre

15

Peut-être que c'est le custom validation feature (alias "Valider les données de formulaire en utilisant des champs cachés")? Pour l'essentiel, en utilisant des champs de formulaire spécifiquement formatés (field_required, field_date, field_integer, etc.), vous pouvez effectuer une validation côté serveur de vos formulaires.

Cela remonte à plusieurs versions de ColdFusion, à l'époque où CFFORM n'était pas très robuste et vous évite d'avoir à écrire du code de validation pour chacun de vos champs de formulaire. Il y a de meilleurs moyens de le faire maintenant, mais il est toujours là pour la rétrocompatibilité.

+0

Oui, apparemment c'est tout. Encore un bug à mon humble avis, mais il est bon de savoir quelle est la cause sous-jacente. Et que je n'ai pas perdu la tête. :-) –

+2

Ce n'est pas un bug, c'est juste une très mauvaise décision qui a été maintenue pour des raisons de rétrocompatibilité. –

+1

Je dirais toujours que c'est un bug basé sur le fait que la propriété fieldnames devrait toujours montrer tous les champs soumis. Ces champs sont toujours soumis. – williambq

0

Oui, j'ai aussi rencontré ce problème avec ColdFusion 8. J'étais pratiquement prêt à tester en vol mon serveur en essayant de comprendre pourquoi une zone de texte nommée "asof_date" n'était pas traitée et n'apparaissait pas dans les FIELDNAMES champ dans mes données publiées (ce qui explique pourquoi il a été ignoré). J'appelle ça un bug en termes d'orthogonalité. Dès que j'ai changé le nom en "pub_asof" ça a bien fonctionné. Argh !!

+0

J'ai une règle de base pour mettre les types de données comme préfixes sur mes valeurs/variables/noms de champs (comme dtAsof, dtCreated, aArray, szZeroBitString, nMyNumber, iMyInteger, etc.). – williambq

Questions connexes