[java] getPageContext()。getRequest()。getParameterMap()與多部分形式?


0 Answers

Question

下面是我用來測試這個代碼:

<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代表第二個字段。 名字為struct的形式的值將是1,2,3,4,5,6,7,8這是不正確的 。 現在,因為getParameterMap()返回值的數組, 我會有兩個元素,如: [“1,2,3,4”,“5,6,7,8”]

更新:試圖看看什麼getHttpRequestData()。內容將返回每Leigh的建議。 這似乎是一個空白的二進製文件。

更新:感謝您利用計算出來,而不完全使用getPageContext。 技巧是在窗體範圍上使用getPartsArray()方法。 我甚至不知道這個存在!

保持想法來請!




Related