您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在Java中使用Struts2實現(xiàn)一個復選框,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
注:listKey相當于HTML中的value屬性,這個值在和后臺交互時才真正是我們在后臺要使用的;listValue只是內容的顯示而已。
用戶選擇了喜歡的課程,現(xiàn)在要對已經(jīng)選擇的課程進行修改,跳轉到修改界面,然后回顯已經(jīng)勾選的課程。
用戶已選課程界面:
點擊按鈕后進入課程修改界面:
注:在修改界面要對用戶最初的選擇進行回顯。
用戶已選課程界面:
<body> 您的課程: <form action="checkBoxAction_test.action" method="post"> <s:checkboxlist list="{'Java','.Net','PHP','C++'}" name="courses" /></br> <input type="submit" value="我要修改"/> </form> </body>
action代碼:
public class CheckBoxAction extends ActionSupport { private static final long serialVersionUID = 1L; /*用戶所選擇的課程(字符串,要去空格)*/ private String courses; public String getCourses() { return courses; } public void setCourses(String courses) { this.courses = courses; } public String test(){ /*去空格【必須用這種方式去空格,trim()這種方式不管用】*/ String courStrs = this.courses.replaceAll(" ", ""); /*定義一個集合把用戶所選擇的課程存在集合中*/ List<String> userCourses = new ArrayList<String>(); /*遍歷*/ for (String str : courStrs.split(",")){ userCourses.add(str); } /*把用戶所選擇的課程存在OGNL Context上下文中*/ ActionContext.getContext().put("userCourses", userCourses); /*以集合的形式把所有復選框都傳到結果頁面進行展示,然后和用戶所勾選的進行匹配*/ List<String> cous = new ArrayList<String>(); cous.add("Java"); cous.add(".Net"); cous.add("PHP"); cous.add("C++"); /*把所有課程存在OGNL Context上下文中*/ ActionContext.getContext().put("cous", cous); return this.SUCCESS; } }
修改界面:
<body> 您所選擇的課程為: <s:checkboxlist name="courses" list="#cous" value="#userCourses" /> </body>
注:在修改界面,很簡單就可以實現(xiàn)結果的回顯,另外,list和value的值,我們只需要#屬性名稱的形式就可以獲取,是因為我們在action中已經(jīng)把對象存在了ActionContext即OGNLContext上下文中。
下面我們通過一個相似的案例來更接近的模擬開發(fā)環(huán)境:
用戶選擇自己的偶像(一個javaBean對象),然后同樣是跳轉到修改界面進行修改,在修改界面進行回顯數(shù)據(jù)。
用戶已選偶像界面:
修改界面(要實現(xiàn)數(shù)據(jù)的回顯)
用戶已選偶像界面:
<body> 您的偶像: <form action="checkBoxListAction.action" method="post"> <s:checkboxlist list="#{1:'鄧小平',2:'習近平',3:'胡錦濤',4:'李克強'}" name="ids" listKey="key" listValue="value"/></br> <input type="submit" value="我要修改"/> </form> </body>
注:list為OGNL創(chuàng)建的Map集合。listKey相當于表單提交的真實value值,我們把Map的key傳到后臺進行處理。
javaBean對象:
public class User { /* 用戶id */ private Integer uid; /* 用戶名 */ private String uname; /* 無參構造函數(shù) */ public User() { } /* 構造函數(shù) */ public User(Integer uid, String uname) { this.uid = uid; this.uname = uname; } public Integer getUid() { return uid; } public void setUid(Integer uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } }
action代碼:
public class CheckBoxListAction extends ActionSupport { private static final long serialVersionUID = 1L; /* 偶像集合 */ private List<User> users; /* 偶像id字符串 */ private String ids; public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } public String getIds() { return ids; } public void setIds(String ids) { this.ids = ids; } public String execute() { /*模擬從數(shù)據(jù)庫中獲取所有的偶像,傳到前臺展示,然后和用戶選擇的進行對比*/ users = new ArrayList<User>(); users.add(new User(1, "鄧小平")); users.add(new User(2, "習近平")); users.add(new User(3, "胡錦濤")); users.add(new User(4, "李克強")); /*存到OGNL Context上下文中*/ ActionContext.getContext().put("users", users); /*定義一個集合,用來存放用戶所選的偶像id的集合*/ List<Integer> userIds = new ArrayList<Integer>(); /*獲取用戶所勾選的ids,去除空格【必須用這種方式,trim()方法不管用】*/ ids = ids.replaceAll(" ", ""); /*迭代*/ for (String str : ids.split(",")){ userIds.add(Integer.valueOf(str)); } /*把id存到OGNL上下文集合中*/ ActionContext.getContext().put("userIds", userIds); return this.SUCCESS; } }
修改界面(進行數(shù)據(jù)的回顯):
<body> 您的偶像為: <s:checkboxlist name="users" list="#users" listKey="uid" listValue="uname" value="#userIds"/> </body>
注:listKey和listValue就是javaBean的兩個屬性,checkboxlist迭代時會將他們放在值棧中,所以不需要#命名空間的形式來獲取,直接使用屬性名稱就可以獲取,value的值為javaBean中uid的集合,自動進行匹配,然后選中對應的值。
附:
1.如果你的項目沒有用到freemaker,卻又出現(xiàn)了如下圖所示的錯誤!
上述內容就是怎么在Java中使用Struts2實現(xiàn)一個復選框,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。