使用UIBinder的GWT应用程序无法正确加载

时间:2012-01-18 20:55:54

标签: java gwt uibinder

使用UiBinder的我的GWT应用程序无法在Internet Explorer中加载。但是,它在Firefox,Safari和iPhone上都可以正常加载。

在试图找出问题时,我一直在试图寻找根本原因。我基本上是一个标签,它仍然适用于FF而不是IE。

这是EntryPoint

public class Core implements EntryPoint {

  private static Core instance;
  public static Core instance() {
    return instance;
  }

  @Override
  public void onModuleLoad() {
    instance = this;
    RootPanel container = RootPanel.get("container");
    container.add(new Label("hi"));
  }
}

这是我的index.jsp:

<!doctype html>
<html>
<head>
<script type="text/javascript" src="core/core.nocache.js"></script>
</head>
<body>
    <div id="container"></div>
</body>
</html>

这是我的appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>realAppNameHere</application>
  <version>andrew</version>
  <static-files>
    <include path="**" />
    <!-- The following line requires App Engine 1.3.2 SDK -->
    <include path="**.nocache.*" expiration="0s" />
    <include path="**.cache.*" expiration="365d" />
    <exclude path="**.gwt.rpc" />
  </static-files>
  <!-- Configure java.util.logging -->
  <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>
</appengine-web-app>

这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

即使有这个精简版的所有东西,它仍然适用于Firefox但不适用于IE。现在甚至没有任何错误,即使在Firebug中也没有...它只是没有在IE中显示标签,但它会在FF中显示标签。我不知道为什么这不会运行。

有人有任何想法吗?

编辑3:

忘记module.gwt.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='core'>
  <!-- Inherit the core Web Toolkit stuff.                        -->
  <inherits name='com.google.gwt.user.User'/>
  <inherits name='com.google.gwt.ajaxloader.AjaxLoader'/>
  <inherits name="com.google.gwt.logging.Logging"/>

  <inherits name='com.google.gwt.user.theme.clean.Clean'/>

  <entry-point class='com.company.core.client.Core'/>

  <source path='client'/>
  <source path='shared'/>

  <set-property name="gwt.logging.logLevel" value="SEVERE"/>
  <set-property name="gwt.logging.enabled" value="FALSE"/>
  <set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
  <set-property name="gwt.logging.simpleRemoteHandler" value="DISABLED" />
</module>

2 个答案:

答案 0 :(得分:1)

有些东西不会出现在IE6中,但它肯定会被加载。您需要看到的第一件事是您是否已将IE6的用户代理添加为

<set-property name="user.agent" value="ie6"/>
<。>在.gwt.xml文件中。

接下来,您需要检查是否在浏览器安全设置中为localhost添加了例外。

如果完成所有这些并且仍然无法正常工作,请尝试清理项目并重新编译它。

答案 1 :(得分:1)

通过测试IE的实际副本(不是Firefox的IE插件),我们能够看到错误“控制台未定义”。

原来,这是在IE中引发异常,阻止了页面加载:

public native static void log(String inString)
/*-{
  console.log(inString);
}-*/;

因此,要解决此问题,我们会将该引用取出console并替换为跨浏览器的日志记录库,例如GWT-Log