gpt4 book ai didi

java - Wicket RepeatingView 刷新/重新渲染?可能性? [列出缺少的项目]

转载 作者:行者123 更新时间:2023-12-01 07:32:16 27 4
gpt4 key购买 nike

我的 Wicket 口应用程序遇到了一些问题。

问题出在一个名为 OverviewPage 的页面上,这里有一些面板,例如 ListPanel,其中有我的 RepeatingView。

这个RepeatingView(列表)有一些项目,每个项目都有一个按钮,如果我按下按钮,我将被重定向到另一个页面(RegistrationPage),并且对RepeatingView(列表)进行一些更改。

如果我现在使用 RepeatingView(列表)导航回 OverviewPage,则该列表与以前完全相同。我对列表项进行了更改,但它们不可见。 (我没有按浏览器后退按钮,我单击了导航的链接)

我知道在 session 期间最后出现 Wicket 页面的实例。我可以告诉 wicket 重新渲染此页面/列表吗?有什么可能性?谁都可以吗?

谢谢

编辑:

以下是包含 RepeatingView 的面板:

/**
*
* Constructor...
*
* @param id
*/
public ServiceListPanel(String id) {

super(id);

RepeatingView repeating = new RepeatingView("repeating");
add(repeating);

int index = 0;

// add all services to the list

for (Service service : databaseService.getAllServices()) {

AbstractItem item = new AbstractItem(repeating.newChildId());

repeating.add(item);

item.add(new ActionPanel("actions", new Model<Service>(service)));

item.add(new Label("name", service.getName()));
item.add(new Label("description", service.getDescription()));
item.add(new Label("country", service.getCountry()));

final int idx = index;
item.add(AttributeModifier.replace("class", new AbstractReadOnlyModel<String>() {

private static final long serialVersionUID = 1L;

@Override
public String getObject() {

return (idx % 2 == 1) ? "even" : "odd";
}
}));

index++;
}

}

下一个是应该发生更改的 ActionPanel:

/**
*
* Constructor...
*
* @param id
* @param model
*/
public ActionPanel(String id, final IModel<Service> model) {

super(id);

Link<?> link;

ContextImage image;

final ServiceUserDetails user = getSession().getUser();

final Service service = model.getObject();

// Check for groups and customize the link to subscribe or unsubscribe

if (checkUserGroups(user, service)) {

image = new ContextImage("img", "template/img/unsubscribe.gif");

link = new Link<Void>("select") {

/** */
private static final long serialVersionUID = -2153508505463870485L;

/**
*
* @see org.apache.wicket.markup.html.link.Link#onClick()
*/
@Override
public void onClick() {

ServiceRequest req = new ServiceRequest(service, user, "DELETE");

serviceProcessor.handleServiceRequest(req);

setResponsePage(new RegistrationPage());



}
};

} else { // user is not in group

image = new ContextImage("img", "template/img/subscribe.gif");

link = new Link<Void>("select") {

/** */
private static final long serialVersionUID = -2153508505463870485L;

/**
*
* @see org.apache.wicket.markup.html.link.Link#onClick()
*/
@Override
public void onClick() {

ServiceRequest req = new ServiceRequest(service, user, "PUT");

serviceProcessor.handleServiceRequest(req);

setResponsePage(new RegistrationPage());


}
};

}

link.add(image);

add(link);

}

正如你所看到的,我唯一想要改变的是一个图像,一个链接图像。用于订阅或取消订阅服务。列表项保持不变。

我对 Wicket 门很陌生,也许这就是我的问题。

希望现在能得到更好的解释。

最佳答案

为你的actionPanel提供一个LoadableDetachableModel而不是一个普通的Model。 LDM 总是获取新的新鲜对象,因此这可能会解决您的问题。您可能需要大量重构代码。

上次 a 遇到了类似的 DataTable 问题,它有所帮助。

关于java - Wicket RepeatingView 刷新/重新渲染?可能性? [列出缺少的项目],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16419868/

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