gpt4 book ai didi

java - 为什么使用Behavior渲染textField需要这么长时间

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:11 24 4
gpt4 key购买 nike

在我的应用程序中,我有大约 100 行的 listView。每行都包含具有行为的文本字段。问题是渲染此页面花费的时间太长,大约 2 秒。当我删除这种行为时,只需要几毫秒。我的问题是为什么需要这么长时间,有没有办法让它更快?

   add(new ListView<PlayOffGame>("games") {

private static final long serialVersionUID = 1L;

@Override
protected void populateItem(final ListItem<Game> listItem) {


listItem.add(new TextField<String>("results").add(new AjaxFormComponentUpdatingBehavior("onchange") {

private static final long serialVersionUID = 1L;

@Override
protected void onUpdate(AjaxRequestTarget target) {
// do something
}
}));
}
});

更新

Wicket 口版本:1.5.9

渲染=方法onRender:

@Override
protected void onRender() {
logger.debug("Render start");
long time = System.currentTimeMillis();
super.onRender();
time = System.currentTimeMillis() - time;
logger.debug("Render: " + time + " ms");
};

最佳答案

这需要很长时间,因为您为每个 TextField 添加一行 javascript(通过使用 AjaxFormComponentUpdatingBehavior)。

我在使用 AjaxEventBehavior 时遇到了一些问题。我已经在父级上实现了自定义行为,用于检查哪个子级导致了该事件。这会显着减少渲染时间以及浏览器加载时间。

我认为通过重写onEvent并获取正确的子FormComponent,可以对AjaxFormComponentUpdatingBehavior做类似的事情。 FormComponent 需要一个 setOutputMarkupId(true) 并且您需要一些 cutsom javascript 将 id 传递给行为。

关于java - 为什么使用Behavior渲染textField需要这么长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22450411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com