- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
好的,就到这里。这是我的第一个 wicket 应用程序,我正在尝试使用 Pushpanel 示例集成icepush。
我想做的是通过调用另一个类的“updatePanel(String content)”方法将更新推送到面板。
这是代码。
在我的扩展 PushPanel 中,我有:
public AsyncCommsPanel(String id) {
super(id);
this.setOutputMarkupId(true);
ajaxForm = new Form("ajaxForm");
ajaxForm.setOutputMarkupId(true);
ajaxForm.add(textStore = new Label("textStore",""));
ajaxForm.add(new AjaxButton("updateButton") {
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
System.out.println("Update button pressed!");
/* CODE TO PULL NEW DATA FROM ELSEWHERE */
/* UPDATE TAKES TIME SO HAS ITS OWN CALLBACK */
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
System.out.println("Update button error.");
}
});
add(ajaxForm);
}
@Override
protected void pushCallback(AjaxRequestTarget target) {
target.add(ajaxForm);
}
public void updatePanel(String updateString) {
/* THIS METHOD SHOULD ALLOW THE PANEL TO BE UPDATED FROM ELSEWHERE */
if (textStore != null) ajaxForm.remove(textStore);
ajaxForm.add(textStore = new Label("textStore", updateString));
push();
}
当我尝试从数据收集器的回调方法调用“updatePanel”方法时,出现以下异常:
ERROR (SelectorManager.run): org.apache.wicket.WicketRuntimeException: No RequestCycle is currently set!
at org.apache.wicket.Component.getRequest(Component.java:1831)
at org.apache.wicket.markup.html.WebPage.dirty(WebPage.java:315)
at org.apache.wicket.Page.dirty(Page.java:288)
at org.apache.wicket.Page.componentRemoved(Page.java:948)
at org.apache.wicket.MarkupContainer.removedComponent(MarkupContainer.java:1422)
at org.apache.wicket.MarkupContainer.remove(MarkupContainer.java:612)
at uk.ac.warwick.collabtex.AsyncCommsPanel.updatePanel(AsyncCommsPanel.java:107)
at uk.ac.warwick.collabtex.Editor$1.updateSuccess(Editor.java:98)
最佳答案
欢迎来到异步世界:-) ThreadLocals(Application、Session 和 ThreadLocal)仅在处理 http 请求线程(也称为工作线程)期间可用。因此存在两个问题:1)通过启动您自己的线程,您会丢失 ThreadLocal,2)即使您导出它们,当您的工作完成时,响应也有可能已经关闭。我不确定 IcePush 是如何工作的,但我认为这是最好的选择 - 提交任务,在应用程序中保留对其的引用(例如 map ),然后启动一个 ajax 计时器行为,询问 futureTask.isDone()定期,当它返回 true 时,您需要更改层次结构(我在堆栈跟踪中看到对 MarkupContainer#remove() 的调用)。
关于java - 使用icepush wicket集成并尝试从另一个类调用"No RequestCycle is currently set!"时出现'push()'异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842788/
好的,就到这里。这是我的第一个 wicket 应用程序,我正在尝试使用 Pushpanel 示例集成icepush。 我想做的是通过调用另一个类的“updatePanel(String content
在 Wicket 1.4 中,我使用自己的 WebRequestCycle 在页面分离时将页面存储在 session 中 - 以便实现“后退”链接。 getRequestCycleListeners(
我在基于 Apache Wicket 和 Spring 的 Web 应用程序中遇到问题。当我在Tomcat服务器上部署应用程序时,偶尔会出现这样的错误信息 ERROR: org.apache.wick
我是一名优秀的程序员,十分优秀!