如何使用AJAX更新Wicket DataView?

时间:2010-12-30 08:15:57

标签: java ajax wicket dataview

我需要根据Wicket PsDoctrans中显示的DataView的用户列表进行AJAXfully过滤。

final TextField txtName= new TextField("user");

final PSDocDP dp = new PSDocDP("username");
DataView<PsDoctrans> dataView = new DataView<PsDoctrans>("unproc", dp)
{
    @Override
    protected void populateItem(final Item<PsDoctrans> item)
    ...
};

PSDocDP是:

public class PSDocDP extends SortableDataProvider<PsDoctrans>
{...}

final WebMarkupContainer wmc = new WebMarkupContainer("container"); 
wmc.add(dataView); 
wmc.setOutputMarkupId(true);

AjaxButton butFind=new AjaxButton("find"){
    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form)
    {               
        String value=(String)txtName.getModelObject();
        dp = new PSDocDP(value);

        target.addComponent(wmc);
    }
};

提交后,没有任何变化。该程序显示了一些数据,但它没有过滤。我怎样才能进行过滤?

1 个答案:

答案 0 :(得分:2)

我使用的结构与此相当,所以它应该有效。

你真的在回调中创建了一个新的“dp”对象吗?您应该只是更改数据提供者的状态 - 组件应该如何获得更改的提供者。

    @Override
    protected void onSubmit(AjaxRequestTarget target, Form<?> form)
    {               
        String value=(String)txtName.getModelObject();
-->        dp.setName(value);
        target.addComponent(wmc);
    }