wicket DropDownChoice RadioChoice 实用

        前一阵子,介绍了wicket的一些官方的例子,实际开发中发现有些不太实用,例子过于简单了,考虑到目前我们团队中好多人都不熟悉这个框架(我也是刚刚接触),网上开发者寥寥无几,国内新一点的参考草料基本没有看到,为了写一个页面动不动上百行千行代码,而且极其复杂,思前考后,觉得应该是我们用错了,所以先单独对感觉几个复杂也是常用的组件下拉框、单选按钮进行单独研究,经过约两天的反复推敲,终于喜得成果,话不多说,如下:

 

1.测试、运行环境:idea+maven+tomcat7

2.相关版本:wicket7.6.0,jdk7

 

本章省去wicket安装运行环节,具体可参照本人文章:http://pandahuha.iteye.com/admin/blogs/2353293

运行环境搞定后:

首先构建登录用户,

public class User implements IClusterable {
private int id;
private String loginName;
private String nickname;
private int logins;

set/get省略

构建页面类,命名LoginPage,

public class LoginPage extends WebPage {
private static final long serialVersionUID = -445927799394341911L;

new 两个list,下拉框、单选按钮会用到

private static final List SITES = Arrays.asList(new String[]{"T", "J", "JN"});
private static final List INTEGERS = Arrays.asList(new Integer[]{1, 2, 3});

页面类构造

public LoginPage(final PageParameters parameters) {
    super(parameters);
    User user = new User();
    user.setNickname("J");
    user.setLogins(2);
    add(new LoginForm("loginForm", new CompoundPropertyModel<User>(user)));
}
user设置完相应属性后,RadioChoice、DropDownChoice会默认选中

构建内部类表单

class LoginForm extends Form<User> {

 

表单构造

public LoginForm(String id, IModel<User> model) {
    super(id, model);

表单内部添加反馈面板

final FeedbackPanel fp = new FeedbackPanel("feedback");
fp.setOutputMarkupId(true);
add(fp);
用于反馈表单验证后的信息

添加登录框架、密码框

add(new TextField("loginName"));
add(new PasswordTextField("pwd"));
这里简单添加一下两个框框

添加下拉框

add(new DropDownChoice("nickname", SITES, new ChoiceRenderer<String>() {
    @Override
    public Object getDisplayValue(String value) {
        switch (value) {
            case "T":
                return super.getDisplayValue("The Server Side");
            case "J":
                return "Java Lobby";
            case "JN":
                return "Java.Net";
            default:
                throw new IllegalStateException(value + " is not mapped!");
        }
    }
}));
重点在这里

添加单选按钮

add(new RadioChoice("logins", INTEGERS, new ChoiceRenderer<Integer>() {
    @Override
    public Object getDisplayValue(Integer value) {
        switch (value) {
            case 1:
                return "One";
            case 2:
                return "Two";
            case 3:
                return "Three";
            default:
                throw new IllegalStateException(value + " is not mapped!");
        }
    }
}));

添加表单提交按钮

add(new AjaxButton("submit") {
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        super.onSubmit(target, form);
        Object o = form.getModelObject();
        if (o instanceof User) {
            User user = (User) form.getModelObject();
            error("it is success!" + "Logins=" + user.getLogins() + "Nickname=" + user.getNickname());
        } else
            error("it is error");
        onError(target, form);
    }

    @Override
    protected void onError(AjaxRequestTarget target, Form<?> form) {
        super.onError(target, form);
        target.add(fp);
    }
});
异步提交表单时候,一定要重写onError方法

好,设置默认欢迎页面就是LoginPage,效果如下

 
欢迎wicket,java探讨

 

 

 

 

 

 

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值