gpt4 book ai didi

java - 隐藏 Wicket WebMarkupContainer 将不起作用

转载 作者:行者123 更新时间:2023-11-30 08:47:54 25 4
gpt4 key购买 nike

嘿,我有一个嵌套在 ListView 中的 ListView,我想在单击 AjaxLink 时更改内部 ListView 的可见性。

我看了很多关于它的帖子,并从中吸取了一些建议。例如。 : .setMarkupId(true), 添加一个 WebMarkupContainer, ...

但没有任何帮助。不管怎样,这就是我到目前为止所得到的。

public class EditZustaendigkeit extends WebPage {
private static final long serialVersionUID = 1L;
private List<Institut> institute = new ArrayList<Institut>();
private Form<Void> mainForm = new Form<Void>("mainForm");

public EditZustaendigkeit() {
this.add(mainForm);
createInstitute();

mainForm.add(new ListView<Institut>("listView", getInstitute()) {

private static final long serialVersionUID = 1L;

protected void populateItem(final ListItem<Institut> item) {
final int index = item.getIndex();
AjaxLink<String> myLink;
IModel<String> labelModel = Model.of("+");
final Institut institut = (Institut) institute.get(index);

item.add(new Label("institutLabel", new PropertyModel<Institut>(institut, "langName")));


final WebMarkupContainer div = new WebMarkupContainer("cont");
div.setOutputMarkupId(true);
div.setOutputMarkupPlaceholderTag(true);
div.add(new ListItemZustaendigkeit("zustaendigkeiten", item, institut));
item.add(div);

item.add(myLink = new AjaxLink<String>("extenderInstitut") {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
collapseItem(index, item, div);
target.add(mainForm);
item.add(div);
setResponsePage(getPage());
}
});
myLink.setBody(labelModel);
myLink.setOutputMarkupId(true);

item.add(new CheckBox("institutCheck", Model.of(Boolean.FALSE)) {
private static final long serialVersionUID = 1L;
// todo
});
}
});
}

public void expandAllItem(ListView<Institut> listView) {

}

public void collapseAllItem(ListView<Institut> listView) {

}

public void expandItem(int index, ListItem<Institut> item, WebMarkupContainer div) {
div.setVisible(true);
}

public void collapseItem(int index, ListItem<Institut> item, WebMarkupContainer div) {
div.setVisible(false);
}

ListItemZustaendigkeit 扩展自 Panel。它具有相应的 .html 文件。

现在我想专注于 public void collapseItem(),因为我想如果一个问题可以解决,其他所有问题也应该是可能的。

最佳答案

问题似乎出在“extenderInstitut”的 onClick 中。您正在调用 setResponsePage,这将导致您的转发器再次初始化。此外,您希望在 mainForm 上设置 setOutputMarkupId(true)

item.add(myLink = new AjaxLink<String>("extenderInstitut") {
private static final long serialVersionUID = 1L;

@Override
public void onClick(AjaxRequestTarget target) {
collapseItem(index, item, div);
target.add(mainForm);
}
});

关于java - 隐藏 Wicket WebMarkupContainer 将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206863/

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