當表單中存在陣列時(假定依次輸入了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...