wicket FilterToolBar demo2

本文介绍了一个使用 Apache Wicket 框架实现的用户管理页面。该页面包含了一个用户数据表格,支持过滤、排序及分页等功能,并提供了一个表单用于新增用户。通过展示具体的 Java 代码和 HTML 模板,详细介绍了页面的具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

----UsersPage----

import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.TextFilteredPropertyColumn;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import wcpackage.domain.entities.User;
import wcpackage.service.UserService;
import wcpackage.webapplication.view.BasePage;

public class UsersPage extends BasePage {


    @SpringBean
    private UserService userService;

    private User user;

    public UsersPage() {
        addUsersDataTable();
        addUsersAddForm();
    }

    private void addUsersDataTable() {
        IColumn<User>[] columns = new IColumn[3];

        columns[0] = new PropertyColumn<User>(new Model("Login"), "login", "login");
        columns[1] = new PropertyColumn<User>(new Model("First Name"), "firstName", "firstName");
        columns[2] = new TextFilteredPropertyColumn<User, String>(new Model("Last Name"), "lastName", "lastName");

        UsersProvider usersProvider = new UsersProvider(userService);
        DataTable<User> users = new DataTable<User>("users", columns, usersProvider, 10);
        users.addBottomToolbar(new NavigationToolbar(users));
        users.addTopToolbar(new HeadersToolbar(users, usersProvider));
        FilterForm<User> filterForm = new FilterForm<User>("filterForm", usersProvider);
        users.addTopToolbar(new FilterToolbar(users, filterForm, usersProvider));
        filterForm.add(users);
        add(filterForm);
    }

    private void addUsersAddForm() {
        user = new User();

        Form form = new Form("form", new CompoundPropertyModel(user));
        form.add(new TextField("login"));
        form.add(new TextField("firstName"));
        form.add(new TextField("lastName"));
        form.add(new Button("addButton") {
            @Override
            public void onSubmit() {
                userService.createNewUser(user);
            }
        });
        add(form);
    }
}

--------------------------------UsersProvider---------------------------------------------------

 

import org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilterStateLocator;
import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import wcpackage.domain.entities.User;
import wcpackage.service.UserService;

import java.util.Iterator;


public class UsersProvider extends SortableDataProvider<User> implements IFilterStateLocator<User> {

    private UserService userService;

    private User filterState;

    public UsersProvider(UserService userService) {
        this.userService = userService;
        filterState = new User();
        setSort("login", true);
    }

    public Iterator<? extends User> iterator(int first, int count) {

        System.out.println("filter: " + filterState.toString());

        String sortType = getSort().isAscending() ? "asc" : "desc";
        return userService.find(first, count, getSort().getProperty(), sortType).iterator();
    }

    public int size() {
        return userService.numberOfUsers();
    }

    public IModel<User> model(User object) {
        return new Model(object);
    }

    public void detach() {

    }

    public User getFilterState() {
        return filterState;
    }

    public void setFilterState(User state) {
        this.filterState = state;
    }
}

-----------------------------html---------------------

 

<html xmlns:wicket="http://www.w3.org/1999/xhtml">

<wicket:head>
    <title></title>
</wicket:head>
<body>
<wicket:extend>


    <br/>

    <form wicket:id="filterForm">
        <input type="hidden" name="tracker" wicket:id="focus-tracker"/>
        <span wicket:id="focus-restore">[call to focus restore script]</span>
        <table cellspacing="0" wicket:id="users">[users]</table>
    </form>
    <form wicket:id="form">
        First name: <input wicket:id="firstName"/>
        Last name: <input wicket:id="lastName"/>
        Login: <input wicket:id="login"/>
        <button wicket:id="addButton">add</button>
    </form>

</wicket:extend>
</body>
</html>

转载于:https://my.oschina.net/u/1047983/blog/129200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值