2009-02-26 11 views
10

Debo estar perdiendo la cabeza.Valor que falta en form.fieldnames en 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 debe incluir una lista de campos presentados: foo, bar y graduation_date. Pero graduation_date falta.

Después de un poco más de prueba, veo que cualquier cosa que termine en _date se excluye de form.fieldnames.

Iba a preguntar qué le pasa a mi código, pero ahora estoy bastante convencido de que es un error en ColdFusion. (Estoy en ColdFusion 8.0.1/OS X 10.5.6.)

Es un error en ColdFusion, ¿verdad?

Respuesta

15

Tal vez es el custom validation feature (también conocido como "Validar los datos del formulario usando campos ocultos")?

Básicamente, al utilizar algunos campos de formulario formateados específicamente (field_required, field_date, field_integer, etc.) puede realizar la validación del lado del servidor de sus formularios.

Esto se remonta a varias versiones de ColdFusion, cuando CFFORM no era muy robusto y evita tener que escribir código de validación para cada uno de los campos de su formulario. Hay mejores formas de hacer esto ahora, pero todavía hay compatibilidad retroactiva.

+0

Sí, aparentemente eso es todo. Todavía un error en mi humilde opinión, pero es bueno saber cuál es la causa subyacente. Y que no he perdido la cabeza. :-) –

+2

No es un error, es solo una muy mala decisión que se ha mantenido por el bien de la compatibilidad con versiones anteriores. –

+1

Aún diría que es un error basado en el hecho de que la propiedad de nombres de campo aún debe mostrar todos los campos enviados. Estos campos aún se envían. – williambq

0

Sí, me encontré con este pequeño problema también con ColdFusion 8. Estaba prácticamente listo para probar el servidor de vuelo tratando de descubrir por qué un cuadro de texto llamado "asof_date" no se procesaba ni aparecía en el FIELDNAMES campo en mis datos publicados (lo que explica por qué se ignoraba). Yo llamo a esto un error en términos de ortogonalidad. Tan pronto como cambié el nombre a "pub_asof" funcionó bien. ¡Argh!

+0

Tengo una regla general para poner los tipos de datos como prefijos en mis valores/variables/nombres de campo (como dtAsof, dtCreated, aArray, szZeroBitString, nMyNumber, iMyInteger, etc.). – williambq

Cuestiones relacionadas