- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Wicket 网页中,我有一个 WebMarkupContainer,其中包含一个 ListView
:
notifications = new ArrayList<Notification>(...);
ListView listView = new ListView("notification", notifications) {
@Override
protected void populateItem(ListItem item) {
...
}
};
container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
container.add(listView);
this.add(container);
WebMarkupContainer
的存在是为了让我动态更新屏幕上向用户显示的项目列表。当用户单击链接或将容器添加到传入的 AjaxRequestTarget
时,这是可能的。
现在我需要在没有 Ajax 请求的情况下更新列表:
public void refresh() {
List<Notification> newNotifications = ...
notifications.addAll(0, newNotifications);
}
此方法在运行时环境中调用,通知列表是我网页的私有(private)字段(与上一个代码相同),将包含新对象。我希望向用户显示这些新项目。是否可以更新(或重新渲染)容器?
我是 Wicket 新手,因此如果您有更好的方法来实现相同的结果,请与我分享,我将不胜感激。
最佳答案
您必须在计时器上执行此操作。使用AjaxSelfUpdatingTimerBehavior这样做。只需设置一些合理的持续时间并将容器添加到“onTimer()”方法中的目标即可。
编辑:
如果您的“refresh()”函数仅在新通知出现时调用,您可以在页面上设置一个标志(在页面上定义 boolean 变量,并在新通知出现时将其更改为 true,在刷新 listView 后将其更改为 false) 。然后你可以设置行为的较短持续时间,“onTimer()”看起来像这样:
onTimer(AjaxRequestTarget target) {
if(newNotifications) {
target.add(container);
newNotifications = false;
}
}
并刷新
public void refresh() {
List<Notification> newNotifications = ...
notifications.addAll(0, newNotifications);
newNotifiactions = true;
}
这样容器就不会刷新得太频繁(这可能会导致奇怪的效果),并且每次出现新通知时都会刷新。
关于java - 更新 Wicket WebMarkupContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18621914/
在我的 Wicket 网页中,我有一个 WebMarkupContainer,其中包含一个 ListView: notifications = new ArrayList(...); ListView
嘿,我有一个嵌套在 ListView 中的 ListView,我想在单击 AjaxLink 时更改内部 ListView 的可见性。 我看了很多关于它的帖子,并从中吸取了一些建议。例如。 : .set
在通过 Ajax 删除条目后,我尝试在 PropertyListView 进行更新,但由于某种原因它无法工作。 我已将 PropertyListView 添加到 WebMarkupContainer
基本上我有一个包含 DateTextField 组件的 WebMarkUpContainer,我想让它仅在我检查 AjaxCheckBox 时可见。 一般来说我的代码是: private static
我是一名优秀的程序员,十分优秀!