【问题标题】:Why GWT URL doesn't change on an event or a service call?为什么 GWT URL 在事件或服务调用时不会改变?
【发布时间】:2011-10-28 15:04:54
【问题描述】:

我有两个问题:

问:1

我目前正在开发 GWT 应用程序。该应用程序的入口点是:ImageViewer.java。我可以通过http://127.0.0.1:8888/ImageViewer.html?gwt.codesvr=127.0.0.1:9997 访问它。我有一个名为“Search”的服务,它定义了相应的“Async”和“Impl”。现在,我使用 RPC 从客户端调用服务。我可以调用服务,获取返回值。一切正常。

但是,我希望应用程序在 URL 上显示行为变化。即当访问服务时,我认为它会反映在浏览器的 URL 上,例如:http://127.0.0.1:8888/search?gwt.codesvr=127.0.0.1:9997,因为我已经修改了 web.xml。但是,这种行为没有实现。有什么特殊原因没有反映出来吗?

问:2

这个问题与之前的问题相反。即我有一个应用程序正在运行。假设它有一个入口点类 (Imageviewer.java) 和另一个复合类 (searchClass.java),它们将根据事件加载到 Imageviewer 上。这个 searchClass 调用上一个问题中提到的“搜索”服务。

我可以在“Imageviewer”中加载“searchClass”,调用服务,服务也会返回所需的值。一切正常...但是,

我需要这样的东西:只需输入这个查询字符串:

http://127.0.0.1:8888/search?value=John

我希望在“ImageViewer”上加载“searchClass”,使用该值(在本例中为“john”)调用服务并显示结果。这有可能吗?

我尝试过的: 我尝试在服务器上创建一个 httpServletClass 并将其映射到 URL 并可以进行搜索。搜索返回适当的结果。但是,我希望服务器的结果显示在客户端上。请记住,我直接使用 servlet 来读取 URL,因此没有值从客户端传递到服务器。

提前致谢。

【问题讨论】:

    标签: gwt gwt-rpc


    【解决方案1】:
    1. RPC (AJAX) 调用是通过 XHR 完成的,并且不会更改浏览器 URL。

    2. 您不能(使用您提供的 URL)。 GWT 应用程序通常在一个网页中运行,即 URL 不会更改(请参阅 gmail 如何更改浏览器 url 栏)。你可以做的是启用GWT history support。那么你的网址就是http://host/#search?value=queryu

    【讨论】:

    • 嗨彼得,GWT 历史支持链接已损坏。
    【解决方案2】:

    答:1. 要更改 URL,哈希部分,您需要在 History 类中设置新的历史令牌。在this article 了解更多关于历史管理的信息。

    答:2. 对于第二部分,您可以通过更改历史令牌来实现,例如“http://127.0.0.1/search#value=John”。如果 # 部分发生变化,历史服务将触发一个事件。您也可以使用带有“?”的部分,如在您的示例中,如果您使用 Window.Location ,但它会导致重新加载应用程序,这会使使用 GWT 的整个想法受到质疑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2017-02-24
      • 2017-05-18
      • 1970-01-01
      相关资源
      最近更新 更多