0

最初のGWTアプリを作成しました。コンパイルエラーも実行時エラーも発生しません。ただし、アプリケーションが(Interner Explorerを使用して)ブラウザーにロードされ、ユーザー名とパスワードのフィールドを入力ユーザーを検証すると、例外がスローされます。GWT-RPCメソッドを使用して、コード全体とインターフェイスが提供されます。データベース接続(バックエンド)にHSQLを使用しています。

------------------コード(クライアント)

package com.vin.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;

public class HelloWorld implements EntryPoint{
    private UserServiceAsync UserService = (UserServiceAsync) GWT.create(UserService.class);
    public void onModuleLoad() {
        Button click=new Button("Click Here");
        Label name=new Label("Enter Name");
        Label passwrd=new Label("Enter Password");
        final TextBox t_name=new TextBox();
        final PasswordTextBox t_passwrd=new PasswordTextBox();
        click.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {
            String temp_user=t_name.getText();
            String temp_pass=t_passwrd.getText();
                 UserService.loginuser(temp_user, temp_pass, new AsyncCallback<String>() {
                     public void onFailure(Throwable caught) {
                             Window.alert("Please enter valid details");
                      }
                     public void onSuccess(String result) {
                         Window.alert("Welcome");
//                         Window.open("http://127.0.0.1:8888/ExWid.html?gwt.codesvr=127.0.0.1:9997", "Dem", null);
                     }
                 });
            }
        });
        RootPanel.get().add(name);
        RootPanel.get().add(t_name);
        RootPanel.get().add(passwrd);
        RootPanel.get().add(t_passwrd);
        RootPanel.get().add(click);
}
}

-----------------------------クライアントインターフェイス(1)

package com.vin.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface UserService extends RemoteService {
    public String loginuser(String username, String password);
}

----------------------------クライアント非同期インターフェース

package com.vin.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface UserServiceAsync {
    public void loginuser(String username, String password, AsyncCallback<String> callback);
}

--------------------------クライアントユーザーサービス(サーバー)の実装...データベース接続

package com.vin.server;

import java.sql.DriverManager;
import java.sql.ResultSet;
import com.google.gwt.dev.generator.ast.Statement;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.vin.client.UserService;

public class UserServiceImpl extends RemoteServiceServlet implements UserService{
    private static final long serialVersionUID = 1L;

    public String loginuser(String username,String password) {
        try {
            java.sql.Connection con = null;
            Class.forName("org.hsqldb.jdbcDriver");
            con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/", "SA", "");
            Statement st=(Statement) con.createStatement();
            ResultSet rs=((java.sql.Statement) st).executeQuery("select username,password from lgfrm");
            String user=rs.getString(1);
            String pass=rs.getString(2);
            if(username.equals(user) && password.equals(pass)) {
                Window.alert("success");
            }
        }
    catch (Exception ae) {}
        return "success";
    }
}

------------------ユーザーを検証しようとしている間の例外リスト

15:22:54.583[エラー][helloworld]キャッチされなかった例外がエスケープされましたcom.google.gwt.event.shared.UmbrellaException:1つ以上の例外がキャッチされました。com.google.gwt.event.sharedのUmbrellaException#getCausesのフルセットを参照してください。 HandlerManager.fireEvent(HandlerManager.java:129)at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent( DomEvent.java:116)at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)

そして、これらのような多くのもの。

4

2 に答える 2

2

com.google.gwt.user.client.Windowクラスは、ブラウザウィンドウのメソッド、プロパティ、およびイベントへのアクセスを提供します。したがって、サーバーサイドでは使用できません。"success"要件が満たされている場合はStringを返しException、そうでない場合はreturnを返すと、クライアント側でキャッチさonFailureれます。

于 2012-10-05T11:35:03.037 に答える
1

サーバー側(UserServiceImplクラス)ではWindow.alertを使用できないと思います。多くのクライアントが存在する可能性があり、サーバーはそれがどのクライアントを対象としているかを知ることができません。

しかし、それがこのエラーの原因かどうかはわかりません。

于 2012-10-05T11:23:46.540 に答える