【问题标题】:Why GWT doesn´t work without ?gwt.codesvr=127.0.0.1:9997为什么 GWT 在没有 ?gwt.codesvr=127.0.0.1:9997 的情况下无法工作
【发布时间】:2011-08-29 21:47:17
【问题描述】:

我想知道为什么 GWT 在 url 中没有参数 ?gwt.codesvr=127.0.0.1:9997 时无法工作,我正在对 url 进行硬编码的模块之间重定向,我必须将此行设置为不显示消息:模块 XXX 必须(重新)编译。

希望以后我从主机模式更改为我们模式时不必更改此网址...

那么有没有更好的方法来从一个模块链接到另一个模块?我正在做:

GWT.getHostPageBaseURL() + "UserRegistration.html ?gwt.codesvr=127.0.0.1:9997 "

提前致谢。

【问题讨论】:

    标签: gwt


    【解决方案1】:

    *.nocache.js 会查看该查询字符串参数以触发加载您在浏览器中安装的开发模式插件,因此它会连接回指定的 DevMode 应用程序。

    当您必须在页面之间重定向并且希望它们都在开发模式或 Web 模式下运行时,最简单的方法是设置参数(如果可能,使用从现有参数中获取的值,而不是硬编码)致!GWT.isProdMode()

    if (!GWT.isProdModode()) {
       // assumes 'url' doesn't contain a query-string yet
       url += "?gwt.codesvr=" + Window.Location.getParameter("gwt.codesvr");
    }
    

    如果您自己不使用查询字符串,那么它只会与gwt.codesvr 参数一起存在或不存在,您可以使用UrlBuilder 使其更简单:

    UrlBuilder builder = Window.Location.createUrlBuilder();
    builder.setPath(GWT.getHostPageBaseURL() + "UserRegistration.html")
    //don't pass the history token around:
    builder.setHash(null);
    // builder.toString() will then keep the same query string.
    

    它甚至不受应用程序运行的当前“模式”的限制,因为它只是无条件地复制查询字符串。

    【讨论】:

    • GET.getHostPageBaseURL() 返回绝对 URL,包括方案、主机:端口。在 setPath() 中使用它会导致 URL 格式错误。但是,如果您完全跳过调用 setPath(),它将假定页面的当前 URL,这适用于典型的 GWT 单页 web 应用程序。
    【解决方案2】:

    该参数仅用于开发模式。 请注意,如果您使用该参数对 url 进行硬编码,那肯定是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-25
      • 2021-11-26
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2012-04-01
      相关资源
      最近更新 更多