【问题标题】:wicket url parameters with stateful pages带有状态页面的检票地址 url 参数
【发布时间】:2012-05-28 23:31:17
【问题描述】:

在我开发的应用程序上,我试图为应用程序的页面保留一个漂亮且可读的 url。 我从 url 开始如下: http://somedomain.com/context/?param1=value&param2=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)对我来说是不可能的,因为正如我所写,参数本身可能会改变 - 有一组参数(数十个)可能会或可能会不通过。

标签: java url wicket


【解决方案1】:

从您的 url 示例中,我看到您使用的是 Wicket 1.4。我相信 1.5 会做你想要的开箱即用。在 Wicket 1.4 中,您可以通过使用 HybridUrlCodingStrategy 挂载页面来获得类似的结果。

【讨论】:

  • 如果那个不完全符合您的要求,您可以尝试编写自己的,尽管在 Wicket 1.4 中这并不容易。在 1.5 中在这方面进行了很多改进
  • 我尝试了 HybridUrlCodingStrategy 和 MixedParamUrlCodingStrategy 并且还编写了自己的策略,但都没有奏效。我注意到的是,当重定向到带有 getRequestCycle().setResponsePage(new otherPage(obj1, obj2, pageParameters) 的页面时,检票口根本不使用选择的 url 编码策略。为什么会这样,我该怎么做使用首选策略?
猜你喜欢
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-07-24
  • 2013-09-12
  • 1970-01-01
相关资源
最近更新 更多