服务器之家

服务器之家 > 正文

Java框架学习Struts2复选框实例代码

时间:2021-04-01 14:52     来源/作者:lavimer

复选框在web开发中使用的非常多,现在我们通过struts2的复选框标签来实现一些在开发中经常遇到的问题。

先来看看这个标签的属性:

Java框架学习Struts2复选框实例代码

注:listkey相当于html中的value属性,这个值在和后台交互时才真正是我们在后台要使用的;listvalue只是内容的显示而已。

案例1

用户选择了喜欢的课程,现在要对已经选择的课程进行修改,跳转到修改界面,然后回显已经勾选的课程。

用户已选课程界面:

Java框架学习Struts2复选框实例代码

点击按钮后进入课程修改界面:

Java框架学习Struts2复选框实例代码

注:在修改界面要对用户最初的选择进行回显。

代码实现!!!!

用户已选课程界面:

?
1
2
3
4
5
6
7
<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代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
    }
}

修改界面:

?
1
2
3
4
<body>
  您所选择的课程为:
<s:checkboxlist name="courses" list="#cous" value="#usercourses" />  
 </body>

注:在修改界面,很简单就可以实现结果的回显,另外,list和value的值,我们只需要#属性名称的形式就可以获取,是因为我们在action中已经把对象存在了actioncontext即ognlcontext上下文中。

下面我们通过一个相似的案例来更接近的模拟开发环境:

用户选择自己的偶像(一个javabean对象),然后同样是跳转到修改界面进行修改,在修改界面进行回显数据。

用户已选偶像界面:

Java框架学习Struts2复选框实例代码

修改界面(要实现数据的回显)

Java框架学习Struts2复选框实例代码

代码实现!!!

用户已选偶像界面:

?
1
2
3
4
5
6
7
<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创建的map集合。listkey相当于表单提交的真实value值,我们把map的key传到后台进行处理。

javabean对象:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class user {
    /* 用户id */
    private integer uid;
    /* 用户名 */
    private string uname;
    /* 无参构造函数 */
    public user() {
    }
    /* 构造函数 */
    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代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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() {
        /*模拟从数据库中获取所有的偶像,传到前台展示,然后和用户选择的进行对比*/
        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;
    }
}

修改界面(进行数据的回显):

?
1
2
3
4
<body>
  您的偶像为:
<s:checkboxlist name="users" list="#users" listkey="uid" listvalue="uname" value="#userids"/>  
 </body>

注:listkey和listvalue就是javabean的两个属性,checkboxlist迭代时会将他们放在值栈中,所以不需要#命名空间的形式来获取,直接使用属性名称就可以获取,value的值为javabean中uid的集合,自动进行匹配,然后选中对应的值。

附:

1.如果你的项目没有用到freemaker,却又出现了如下图所示的错误!

Java框架学习Struts2复选框实例代码

那么,恭喜你,是因为你的struts2标签没有name属性导致!!!!(泪的教训啊,被它坑了两个小时!)

总结

以上就是本文关于java框架学习struts2复选框实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

原文链接:http://blog.csdn.net/lzm1340458776/article/details/29825399

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部