Java 为什么用行为呈现文本字段需要这么长时间
在我的应用程序中,我有大约100行的listView。每行包含具有行为的文本字段。问题是呈现此页面需要的时间太长,大约2秒。当我消除这种行为时,只需要几分钟。我的问题是为什么需要这么长时间,有没有办法让它更快Java 为什么用行为呈现文本字段需要这么长时间,java,wicket,Java,Wicket,在我的应用程序中,我有大约100行的listView。每行包含具有行为的文本字段。问题是呈现此页面需要的时间太长,大约2秒。当我消除这种行为时,只需要几分钟。我的问题是为什么需要这么长时间,有没有办法让它更快 add(new ListView<PlayOffGame>("games") { private static final long serialVersionUID = 1L; @Override protected
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
}
}));
}
});
这需要很长时间,因为对于每个
TextField
,您都会添加一行javascript(通过使用AjaxFormComponentUpdateingBehavior
)
我在AjaxEventBehavior
方面遇到了一些问题。我在父级上实现了一个自定义行为,用于检查导致事件的子级。这将大大缩短渲染时间和浏览器加载时间
我认为,通过覆盖
onEvent
并获得正确的子级-FormComponent
,可以对ajaxformcomponentupdatebehavior
执行类似的操作。FormComponent
需要一个setOutputMarkupId(true)
,您需要一些cutsomJavaScript来将id
传递给行为 哪个Wicket版本?您所说的“呈现”时间是什么意思:是在服务器上呈现HTML的时间还是在浏览器中显示页面的时间?注册所有这些Javascript处理程序可能会减慢后者的速度。根据您的问题更新的问题第一:直接使用OnChangeAjaxBehavior
:第二:查看ListView上的setReuseItems(true)
是否改善了这种情况:
@Override
protected void onRender() {
logger.debug("Render start");
long time = System.currentTimeMillis();
super.onRender();
time = System.currentTimeMillis() - time;
logger.debug("Render: " + time + " ms");
};