getPageContext () .getRequest () .getParameterMap () с многослойными формами?

ниже код, который я использую для тестирования этого:

<cfif structkeyexists(form, "submitted")>
    <cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>

<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="hidden" name="submitted" value="1">
    <input type="submit">
</form>
</cfoutput>

то, что мы делаем, использует getPageContext () .getRequest () .getParameterMap () для получения хеша формы и объемов URL во время запроса сообщения. теперь эта работа все великолепные, пока Вы не устанавливаете enctype атрибут формы к "multipart/form-data ‎" как так:

<cfif structkeyexists(form, "submitted")>
    <cfdump var="#getPageContext().getRequest().getParameterMap()#">
</cfif>

<cfoutput>
<form method="post" action="#cgi.script_name#?firstname=tony" enctype="multipart/form-data‎">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="text" size="50" name="page[contents][][content]">
    <input type="hidden" name="submitted" value="1">
    <input type="submit">
</form>
</cfoutput>

то, что происходит в этой точке, - то, что ни одно из значения поля формы не возвращено в хеше, возвращенном из getPageContext () .getRequest () .getParameterMap ().

кто-либо знает, где или как мы можем получить эти данные или обходное решение?

целая причина мы используем getPageContext () .getRequest () .getParameterMap () состоит в том, потому что это возвращает массив, как значение переменной вместо разграниченного списка запятой как использование объема формы делает.

ОБНОВЛЕНИЕ: это находится на 8.0.1 с cumlative текущими исправлениями 4 примененных.

ОБНОВЛЕНИЕ: причина Вы не можете использовать listToArray, состоит в том, потому что говорят, что у Вас есть два поля, названные firstname, и пользователь входят в значения для обоих полей (1 и 2). то, что сделает CF, возвратиться, ключ в структуре формы, названной firstname с запятой, разграничил список для двух значений (1,2). здорово, но скажите, что пользователь входит в значения для поля, которые содержат запятые как 1,2,3,4 для первого поля и 5,6,7,8 для второго поля. значение в структуре формы для firstname будет 1,2,3,4,5,6,7,8. это не корректно. теперь с тех пор getParameterMap () возвращает массив для значения, у меня было бы два элемента как так: ["1,2,3,4", "5,6,7,8"].

ОБНОВЛЕНИЕ: Испытанное наблюдение, что getHttpRequestData () .content возвратил бы на Leigh, предлагает. Это, кажется, пустой двоичный файл.

ОБНОВЛЕНИЕ: Благодарит Вас Leigh за понимание этого и не используя getPageContext полностью. прием использовал getPartsArray () метод на объеме формы. Я даже не знал, что это существовало!

Сохраните идеи, прибывающие!

8
задан rip747 4 February 2010 в 19:52
поделиться

1 ответ

(Хорошо .. возьмите два) Кажется, это работает с CF9. На данный момент я не могу протестировать это с CF8. Можете ли вы его покрутить?

<cfif structkeyexists(form, "submitted")>
   <!--- if this is a multipart request ...--->
   <cfset variables.parts = form.getPartsArray()>
   <cfif structKeyExists(variables, "parts")>
      <cfoutput>   
      <cfloop array="#variables.parts#" index="p">
         <cfif p.isParam()>
            isParam() = #p.isParam()# <br />
            getName() = #p.getName()# <br />
            stringValue() = #p.getStringValue()# <hr />
         </cfif>
      </cfloop>
      </cfoutput>
   </cfif>
</cfif>
3
ответ дан 6 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: