【问题标题】:How can I update a Wicket DataView with AJAX?如何使用 AJAX 更新 Wicket DataView?
【发布时间】:2010-12-30 08:15:57
【问题描述】:

我需要按 PsDoctrans 的用户列表进行 AJAX 完全过滤,该列表显示在 Wicket DataView 中。

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);
    }
};

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

【问题讨论】:

  • 是的,它是最终的,我已经简化了代码以便更容易理解
  • PSDocDP 实现是什么样的?还有@Nishant:是的,它应该,编译器应该对此出错。
  • String value=(String)txtName.getModelObject(); 你得到正确的价值了吗?我怀疑模型可能什么也没返回。
  • 我试过 dp = new PSDocDP(null);但什么都没有改变

标签: java ajax wicket dataview


【解决方案1】:

我使用与此类似的结构,所以它应该可以工作。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多