【发布时间】:2012-05-28 23:31:17
【问题描述】:
在我开发的应用程序上,我试图为应用程序的页面保留一个漂亮且可读的 url。 我从 url 开始如下: http://somedomain.com/context/?param1=value¶m2=value 其中 context 是应用程序的挂载路径,param1 和 param2 是传递给应用程序的一些参数。 问题是,当我移动到另一个页面时,url 变为如下: https://somedomain.com/?wicket:bookmarkablePage=:something&Title=something&group=something 我在页面之间移动的方式如下:
getRequestCycle().setResponsePage(new otherPage(obj1, obj2, 页面参数)
其中 obj1 和 obj2 是页面初始化所需的对象。 正如我从this post 中了解到的那样
RequestCycle().setResponsePage(Page page)
在使用时创建一个不可收藏且不显示参数的有状态页面
RequestCycle().setResponsePage(Class<C> pageClass, PageParameters pageParameters)
创建一个显示参数的无状态页面。 问题是我使用第一个,因为我必须自己创建页面,这样我才能将两个对象传递给它。 有什么方法可以将 url 保持在其原始的可收藏格式并从中删除 wicket 的参数? 我尝试了几乎所有在这个网站和其他网站上发布的建议,但没有一个适合我的情况,因为他们建议让 wicket 自己创建页面(使用 setResponsePage 的第二个选项)。 任何帮助都感激不尽。 谢谢
【问题讨论】:
-
您是否尝试过将页面挂载到特定的 URL?
.../?param1=...构造看起来不太好。 -
问题在于 url 不固定 - 参数值甚至参数本身可能会从一个请求更改为另一个请求。这不是问题,因为正在为用户生成 url,我只想保持初始 url 固定(或几乎固定,而不是不可读的 wicket url)
-
参数值可能会改变,没关系。但是你仍然可以mount bookmarkable pages 应该可以解决这个问题。
-
您添加的链接中的帖子准确描述了我的问题,但没有解决它。事实上,根据这篇文章,wicket 似乎不支持我打算做的事情(在“不可收藏的页面”部分)。它说如果页面是有状态的并且没有构造函数可供 wicket 用来创建它,那么该页面必须在代码中显式创建,并且只能通过重定向来访问。我的问题不在于到达页面,而在于保持网址美观和可读。
-
另外,你的建议(安装到特定的 url)对我来说是不可能的,因为正如我所写,参数本身可能会改变 - 有一组参数(数十个)可能会或可能会不通过。