0

ある種のログインページがすでに設計されている既存のアプリをデバッグしようとしています。ただし、Eclipse で「Run as Java application」に移動すると、次のエラーが表示されます。

01:18:30.207 [ERROR] [pzflex_test] Unable to load module entry point class com.wai.pzflex.client.PZFlex_Test (see associated exception for details)
java.lang.AssertionError: null
    at com.google.gwt.user.client.ui.TextBox.wrap(TextBox.java:63)
    at com.wai.pzflex.client.PZFlex_Test.onModuleLoad(PZFlex_Test.java:60)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
    at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Unknown Source)

Eclipseを使用してデバッグしようとしているコードは次のとおりです。

public void onModuleLoad() 
    {
        try
        {
        HTMLPanel panel = new HTMLPanel("<table align='center'><tr>" + 
            "<td colspan='2' style='font-weight:bold;'>Please enter your username and password:</td>" +
            "</tr><tr><td>Username: </td><td><input type='text' id='loginuser'></td></tr>" +
            "<tr><td>Password: </td><td><input type='password' id='loginpass'></td></tr>" +
            "<tr><td colspan='2' align='right'><button id='loginbutton'>Login</button></td>" +
            "</tr></table>");

        //final - entity that cannot be changed later
        final TextBox username = TextBox.wrap(panel.getElementById("loginuser"));
        final TextBox pass = TextBox.wrap(panel.getElementById("loginpass"));

        RootPanel.get("content").add(panel);

アプリケーションはコードの 'final Textbox..' 行まで実行されているようですが、再開を押すとエラーが発生します。

奇妙なことに、GWT Compile を実行でき、ログイン ページが正常に読み込まれるようです。デバッグしようとすると、なぜこれが起こるのかわかりません。

繰り返しますが、私はJavaとGWT/GAE全体に不慣れなので、アドバイスをいただければ幸いです。

4

2 に答える 2

1

失敗したアサーションが何であるかを見てください。

public static TextBox wrap(Element element) {
  // Assert that the element is attached.
  assert Document.get().getBody().isOrHasChild(element);

(ソース: https://code.google.com/p/google-web-toolkit/source/browse/tags/2.5.0/user/src/com/google/gwt/user/client/ui/TextBox.java #61 )

これは、あなたのRootPanel.get("content").add(panel);前にする必要があることを意味しますTextBox.wrap()

それもうまくいかないことを除いて。ラップされた要素がウィジェット ( ) 内にあるため、後で失敗しますHTMLPanel

必要なことは<input>、HTML 文字列から を削除して ID を に追加し、通常のウィジェットのようにと<td>を作成してから、 を使用して の に配置することです。TextBoxPasswordBoxadd(Widget,String)<td>HTMLPanel

<input>何をする必要があるかによっては、 s をウィジェットとして必要としないかもgetElementByIdしれませHTMLPanelん。cast()InputElement

于 2012-12-11T10:24:21.690 に答える
-1

デバッグして、nullpanel.getElementById("loginuser")panel.getElementById("loginpass") RootPanel.get("content")返すかどうかを確認します....null の場合は、html ファイルにそのIDで div を作成します

于 2012-12-11T04:57:20.027 に答える