大家用struts2時想必會經常遇到在JS或者JSP中往後台傳遞對象數組的問題,你是不是在一直為後台取值是null的問題而苦惱呢?下邊我來告訴大家究竟如何做才能取到值。
一、在Action中聲明數組對象(這裡也可以是List等集合),代碼如下:
public List<User> users = new ArrayList<User>();
這裡有兩點需要注意:
1、聲明可以是public也可以是private,private 要求必須生成get、set方法,推薦使用第二種方式,原理不再詳細說明,有問題可以留言。
2、對象數組(或者集合)必須進行初始化,否則寫的再好後台獲取的值仍為null。這種情況很多人都容易忽略。(簡單提醒下:平時用單個對象時可以從前台到後台傳遞該對象,但把該對象換成數組對象就不行了,原因在於單個對象有該對象的構造方法可以產生該對象的實例,而數組沒有,所以需要數組對象直接new 一個實例出來)。
二、在頁面中或者JS中用get或者post方式進行傳值吧,代碼如:
<input name="users[0].id" value="1"> <input name="users[0].name" value="張三"> <input name="users[1].id" value="2"> <input name="users[1].name" value="李四">
在Debug模式下加斷掉,看看users是不是有值了?