Значение отсутствует в form.fieldnames в 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>

form.fieldnames Переменная должна содержать список представленных полей: foo, bar, и graduation_date . Но graduation_date отсутствует.

После небольшого дополнительного тестирования я вижу, что все, что заканчивается на _date, исключается из form.fieldnames .

Я собирался спросить, что не так с моим кодом, но теперь я почти уверен, что это ошибка в ColdFusion. (Я использую ColdFusion 8.0.1 / OS X 10.5.6.)

Это ошибка в ColdFusion, верно?

Ответов (2)

Решение

Может быть, это особенность пользовательской проверки (также известная как «Проверка данных формы с использованием скрытых полей»)?

По существу, при использовании некоторых специально отформатированные поля формы ( field_required, field_date, field_integer и т.д.) можно выполнять на стороне сервера проверки ваших форм.

Это восходит к нескольким версиям ColdFusion, когда CFFORM не был очень надежным и избавлял вас от необходимости писать код проверки для каждого из полей вашей формы. Сейчас есть более эффективные способы сделать это, но они все еще существуют для обратной совместимости.

Да, я столкнулся с этой небольшой проблемой и с ColdFusion 8. Я был практически готов к тестированию моего сервера, пытаясь выяснить, почему текстовое поле с именем «asof_date» не обрабатывается и не отображается в поле FIELDNAMES в моем опубликованном данные (что объясняет, почему они игнорировались). Я называю это ошибкой с точки зрения ортогональности. Как только я изменил имя на pub_asof, все заработало. Ах !!