struts中操作一個集合數據

這幾天一直被一個問題給困住了,總是調試不過去,以前好像也考慮這個問題。現在終於讓我解決了,所以,一定要把這個東西給記錄下來。
就是我們在開發過程中,經常可能遇到要修改多條記錄的情況,這個時候當然我們可以用原來的辦法,用request.getParameter()來一條一條記錄的修改,但是,現在使用struts框架,這個問題,解決起來就方便了許多。
注意1.checkbox在提交的時候,只會將那些被選中了的即obj.checked=true的那些值提交,而爲false的值不會提交。
注意2.使用struts框架裏賣的ActionForm和標籤來解決這個問題。例如:
ActionForm的代碼:
public class TransSlaitemGridForm extends WafForm {

/**
* An array of VoTransSlaitem.
*/
private VoTransSlaitem[] transSlaitems = null;
........
類VoTransSlaitem的代碼:
public class VoTransSlaitem implements Serializable {
private long transSlaId =0;
private int custSlaitemId =0;
.......
這個ActionForm裏面有一個數組屬性。在頁面將對這個數組多條屬性裏面的數據進行處理。則我們在頁面上的各屬性應該這樣定義。
<input type="hidden" name="transSlaitems[<%=rowIndex %>].transSlaId" value="<bean:write name="transSlaitem" property="transSlaId"/>"/>
這樣的話提交,就會將這個屬性的值賦給ActionForm裏的屬性transSlaitems[index].transSlaId,這樣就可以修改多條記錄了。
但是,注意在AcitonForm裏需要在reset方面對屬性tansSlaitems構造數組對象。
如:
public void reset(ActionMapping mapping, HttpServletRequest request) {
int selectedTransSlaitem = 0;
if (request.getParameter("selectedTransSlaitem") != null)
{
selectedTransSlaitem=Integer.parseInt(request.getParameter("selectedTransSlaitem"));
transSlaitems = new VoTransSlaitem[selectedTransSlaitem];
for(int i=0;i<selectedTransSlaitem;i++)
transSlaitems[i]= new VoTransSlaitem();
}
}
這樣纔不會出錯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章