Java 为什么用行为呈现文本字段需要这么长时间

Java 为什么用行为呈现文本字段需要这么长时间,java,wicket,Java,Wicket,在我的应用程序中,我有大约100行的listView。每行包含具有行为的文本字段。问题是呈现此页面需要的时间太长,大约2秒。当我消除这种行为时,只需要几分钟。我的问题是为什么需要这么长时间,有没有办法让它更快 add(new ListView<PlayOffGame>("games") { private static final long serialVersionUID = 1L; @Override protected

在我的应用程序中,我有大约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
                }
            }));    
        }
    });

这需要很长时间,因为对于每个
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");
};