GWT 2.2 RootPanel CSS错误

时间:2011-02-28 08:44:16

标签: gwt

嘿伙计们,我刚刚开始使用GWT,当我在Eclipse中运行项目时出现以下错误

  

19:36:16.084 [ERROR] [adaptivgwt]   警告:   com.google.gwt.user.client.ui.RootPanel   后代将是错误的   定位,即不相对于他们的   父元素,何时   'position:static',这是CSS   默认,有效。一种可能   修复就是打电话   'panel.getElement()。getStyle()的。setPosition两种(Position.RELATIVE)'

     

java.lang.IllegalStateException:   com.google.gwt.user.client.ui.RootPanel   缺少CSS   '位置:{相对的,绝对的,固定}'       在com.google.gwt.user.client.ui.AbsolutePanel.verifyPositionNotStatic(AbsolutePanel.java:279)       在com.google.gwt.user.client.ui.AbsolutePanel.add(AbsolutePanel.java:118)       在com.ivstel.adaptiv.client.AdaptivGWT.loadLogin(AdaptivGWT.java:29)       在com.ivstel.adaptiv.client.AdaptivGWT.onModuleLoad(AdaptivGWT.java:21)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native   方法)       at sun.reflect.NativeMethodAccessorImpl.invoke(未知   资源)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知   资源)       在java.lang.reflect.Method.invoke(未知   资源)       在com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)       在com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:183)       在com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:510)       在com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:352)       在java.lang.Thread.run(未知来源)

这就是我entry point的样子:

public class AdaptivGWT implements EntryPoint {

private static AdaptivGWT singleton;

        public static AdaptivGWT get() {
                return singleton;
        }

        public void onModuleLoad() {
                singleton = this;
                loadLogin();
        }

        public void loadLogin() {
                RootPanel.get("login").clear();
                RootPanel.get("main").clear();

                LoginGWT login = new LoginGWT();
                RootPanel.get("login").add(login, 10, 10);
        }

        public void loadMain(User user) {
                RootPanel.get("login").clear();

                MainGWT main = new MainGWT();
                RootPanel.get("main").add(main, 10, 10);
        }
}

HTML文件。

<!doctype html>
<!-- The DOCTYPE declaration above will set the    -->
<!-- browser's rendering engine into               -->
<!-- "Standards Mode". Replacing this declaration  -->
<!-- with a "Quirks Mode" doctype may lead to some -->
<!-- differences in layout.                        -->

<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">

    <link type="text/css" rel="stylesheet" href="AdaptivGWT.css">

    <title>Adaptiv</title>

    <script type="text/javascript" language="javascript" src="adaptivgwt/adaptivgwt.nocache.js"></script>
  </head>

  <body>

    <!-- OPTIONAL: include this if you want history support -->
    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe>

    <!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
    <noscript>
      <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif">
        Your web browser must have JavaScript enabled
        in order for this application to display correctly.
      </div>
    </noscript>

    <div id="login"></div>
    <div id="main"></div>

  </body>
</html>

1 个答案:

答案 0 :(得分:3)

使用位置参数(即10,10)和add方法要求将要添加GWT小部件的元素作为子元素,也需要定位元素(即它们必须具有属性:{{ 1}})。在你的情况下,div(包括id main和login)都没有位置。更好地使用position:。如果要将元素放置在左/上10像素,请使用css边距或填充(取决于您的用例)。

另一方面,没有必要同时使用'login'和'main'div,你可以简单地使用一个div,或直接将它添加到正文中,即使用add(main)。这样你就可以在GWT中拥有完全控制权,而不是在html文件中拥有部分结构。