欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

wicket DropDownChoice RadioChoice 实用

程序员文章站 2022-07-15 14:23:03
...

        前一阵子,介绍了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 DropDownChoice RadioChoice 实用
            
    
    博客分类: java框架  
 
wicket DropDownChoice RadioChoice 实用
            
    
    博客分类: java框架  欢迎wicket,java探讨

 

 

 

 

 

 

 

 

 


  • wicket DropDownChoice RadioChoice 实用
            
    
    博客分类: java框架  
  • 大小: 5.4 KB
  • wicket DropDownChoice RadioChoice 实用
            
    
    博客分类: java框架  
  • 大小: 2.8 KB