Struts2接收陣列時需要注意的問題

2022-04-07 03:55:07 字數 1770 閱讀 7069

當表單中存在陣列時(假定依次輸入了1,2,3):

<

form

>

<

input

type="text"

name="param"

/>

<

input

type="text"

name="param"

/>

<

input

type="text"

name="param"

>

<

input

type="submit"

/>

form

>

表單提交傳遞的字串為:param=1¶m=2¶m=3

傳統的servlet只能接收陣列中第乙個引數。

}struts2則能接收多個引數並自動填充陣列。

public

classa

public

voidsetparam(string param)

public

voidexecute()}}

有時候html**也會這樣寫:

<

form

>

<

input

type="text"

name="param[0]"

/>

<

input

type="text"

name="param[1]"

/>

<

input

type="text"

name="param[2]"

>

<

input

type="submit"

/>

form

>

然而,此時struts2則會丟擲空指標異常。

事實上第一種方式struts2只接收了乙個引數,引數的值為1,2,3,struts2將接收到的引數依照action中定義的型別自動轉換成了長度為3的字串陣列

而第二種方式struts2則接收了三個引數,引數值分別為1、2、3,這三個引數是依次接收的,在尚未接收完之前struts2並不能得到陣列的長度,因而不能建立陣列

要想使得此種方式下struts2依舊能工作就要手動為陣列賦值:

privatestring param =newstring[3];

另外,有時也會使用jquery進行ajax請求:

$.ajax(,

url:"a"

});結果struts2後台竟然丟擲異常了,除錯發現jquery進行請求時傳送的資料為:param%5b%5d=1¶m%5b%5d=2¶m%5b%5d=3

經過解析後也就是:param=1¶m=2¶m=3

這是jquery專為適配php和python框架而自動增加的內容,然而struts2並不支援

為了確保jquery ajax請求的引數能被struts2框架識別,jquery**應該這樣寫:

$.ajax(,

traditional:true,

url:"a"

});此時的傳送的資料就是傳統的:param=1¶m=2¶m=3

struts2和spring整合時需要注意的地方

org.springframework.web.context.contextloaderlistener contextconfiglocation 2 對struts.xml配置檔案的乙個地方進行修改即可 原來的配置檔案action為 整合的配置檔案action為 注 這裡的calss從spri...

Struts2接收陣列時需要注意的問題

當表單中存在陣列時 假定依次輸入了1,2,3 form input type text name param input type text name param input type text name param input type submit form 表單提交傳遞的字串為 param 1...

struts2 接收引數

1 採用基本型別接收請求引數 get post 在action類中定義與請求引數同名的屬性,struts2便能自動接收請求引數並賦予給同名屬性。請求路徑 do?id 23 name sss public class productaction private integer id public vo...