gpt4 book ai didi

java - Wicket - 在单击事件上使用可加载可拆卸模型初始化组件

转载 作者:行者123 更新时间:2023-12-02 06:11:29 25 4
gpt4 key购买 nike

我在Panel的构造函数中添加ChildPanel。当面板加载时,子面板将使用 getData() 返回的数据进行渲染。下面是代码。

面板

public Panel(String aId, IModel<String> model)
{

super(aId);

this.model = model;
childPanel = new ChildPanel(MID, LoadableDetachableModel.of(this::getData));

childPanel.setOutputMarkupId(true);
add(childPanel);

}
LambdaAjaxButton button = new LambdaAjaxButton("button",
(_target, _form) -> {

//

});

子面板

 public ChildPanel(String aId, LoadableDetachableModel<String> loadableDetachableModel)

{

super(aId);

childModel = loadableDetachableModel;

component = new WebMarkupContainer(MID_COMPONENT_CONTAINER);
component.setOutputMarkupId(true);
add(component);

}

我想做这样的事情:ChildPanel 仅在我单击按钮时呈现,而不是在此之前呈现。如何在 onClick 事件中定义这样的事情?而且它不能在初始化时渲染。

最佳答案

如果您想避免组件渲染,您可以尝试隐藏子面板并在单击 AJAX 按钮时使其可见。您还应该使用 LambdaModel 而不是 LoadableDetachableModel 以便延迟调用 getData。像这样的事情:

public Panel(String aId, IModel<String> model)
{

super(aId);

this.model = model;
childPanel = new ChildPanel(MID, LambdaModel.of(this::getData));
childPanel.setVisible(false);


childPanel.setOutputMarkupPlaceholderTag​(true);
add(childPanel);

}
LambdaAjaxButton button = new LambdaAjaxButton("button",
(_target, _form) -> {

childPanel.setVisible(true);
_target.add(childPanel);
});

关于java - Wicket - 在单击事件上使用可加载可拆卸模型初始化组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55903638/

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