0

所以我遇到了一个有趣的问题。我有一个检票口页面,其中包含一个数据表和一个使用 web 资源检索它的 xml 数据文件的 fusionchart(闪存图表)。我遇到的问题是,当您在数据表中使用页码或排序链接时,它会重新加载页面并更改 URL,以使图表无法再获取其数据。

例如,在使用排序链接之前(此数据 url 适用于图表) vreports/wicket:interface/:5:tabs:panel:prodGraph::IResourceListener:: (这是基本页面的 url:/vreports.5)

使用排序链接后(此数据 url 不起作用) vreports/wicket:interface/:5:tabs:panel:prodGraph:1:IResourceListener:: (base page url: /verports.5.1)

我的问题是如何将图表使用的网络资源 URL 与数据表链接隔离开来?我看到问题在于添加的 .1,如果您多次单击它,它会增加 1 并且 Web 资源 URL 中的更改匹配。特别奇怪的是,如果我在使用排序功能后刷新页面,排序仍然有效,但图表(和正确的 URL)又回来了。我是 wicket 的新手,我真的找不到太多关于它的 URL 结构如何工作的信息……有什么想法吗?

提前致谢!

山姆

4

2 回答 2

0

我认为您正在使用 OrederBYBorder 进行排序。

试试这个

this.add(new AjaxFallbackOrderByBorder(id,fieldName, issueSortable) {

                private static final long serialVersionUID = 1L;
                @Override
                protected void onSortChanged() {
                    dataView.setCurrentPage(0);
                }
                protected void onAjaxClick(AjaxRequestTarget target) {
                    target.addComponent(componentName);
                }
   }); 

也使用 BookmarkablePageLink 进入此页面或 StatelessLink 意味着使用这些链接进入 fusionchart 页面。

于 2012-06-28T07:47:13.837 回答
0

我最终将我的数据表转换为 AjaxDefaultFallbackDataTable,并且我在 Ajax 中完成了所有的分页和排序,因此 URL 不会因为页面没有刷新而改变。AjaxDefaultFallbackDataTable 使用与 DataTable 相同的 DataProvider,它只处理 AJAX 中的所有内容,因此对于遇到相同问题的任何人来说,它可能是一个简单/首选的替代方案。从字面上看,我必须改变的只是我有 DataTable 的所有地方,我将它切换到 AjaxDefaultFallbackDataTable 并且效果很好!

感谢大家观看!山姆

于 2012-07-03T03:02:01.153 回答