2009-02-26 1 views
10

Ich muss meine Meinung verlieren.Wert fehlt in form.fieldnames in 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> 

Die form.fieldnames Variable sollte eine Liste der eingereichten Felder umfassen: foo, bar und graduation_date. Aber graduation_date fehlt.

Nach ein wenig mehr Tests, sehe ich, dass alles, was in _date endet, von form.fieldnames ausgeschlossen ist.

Ich wollte fragen, was mit meinem Code nicht stimmt, aber jetzt bin ich ziemlich überzeugt, dass es ein Fehler in ColdFusion ist. (Ich bin auf ColdFusion 8.0.1/OS X 10.5.6.)

Es ist ein Fehler in ColdFusion, richtig?

Antwort

15

Vielleicht ist es die custom validation feature (aka "Validierung von Formulardaten mit versteckten Feldern")?

Im Wesentlichen können Sie mithilfe einiger speziell formatierter Formularfelder (field_required, field_date, field_integer usw.) eine serverseitige Validierung Ihrer Formulare durchführen.

Dies führt zu mehreren Versionen von ColdFusion zurück, als CFORM nicht sehr robust war und Sie nicht für jeden Ihrer Formularfelder einen Validierungscode schreiben müssen. Es gibt bessere Möglichkeiten, dies jetzt zu tun, aber es ist immer noch da für Rückwärtskompatibilität.

+0

Ja, anscheinend ist es das. Immer noch ein Bug IMHO, aber es ist gut zu wissen, was die zugrunde liegende Ursache ist. Und das habe ich nicht verloren. :-) –

+2

Es ist kein Fehler, es ist nur eine wirklich schlechte Entscheidung, die aus Gründen der Abwärtskompatibilität beibehalten wurde. –

+1

Ich würde immer noch sagen, dass es sich um einen Fehler handelt, der auf der Tatsache basiert, dass die Eigenschaft fieldnames immer noch alle übermittelten Felder anzeigen sollte. Diese Felder werden noch übermittelt. – williambq

0

Yep lief ich in dieses kleine Problem auch mit Coldfusion 8 ich der Flucht praktisch fertig war meinen Server testen versuchen, warum namens ein Textfeld, um herauszufinden, „asof_date“ wurde nicht procesed wird noch wurde sie in den Feldnamen zeigt nach oben Feld in meinen geposteten Daten (was erklärt, warum es ignoriert wurde). Ich nenne dies einen Fehler in Bezug auf Orthogonalität. Sobald ich den Namen in "pub_asof" geändert habe, hat es gut funktioniert. Argh !!

+0

Ich habe eine Faustregel, um Datentypen als Präfixe auf meine Werte/Variablen/Feldnamen (wie dtAsof, dtCreated, aArray, szZeroBitString, nMyNumber, iMyInteger usw.). – williambq