2

我想在GWT中使用新的Google+ 登录按钮。我找到了这篇 关于如何从 html 制作小部件的帖子,但我还没有成功。

public class GooglePlusSignIn extends Widget{

private final String googleHtml="<span id=\"signinButton\">"
+"<span"
+"class=\"g-signin\""
+"data-callback=\"signinCallback\""
+"data-clientid=\"clientID\""
+"data-cookiepolicy=\"single_host_origin\""
+"data-requestvisibleactions=\"http://schemas.google.com/AddActivity\""
+"data-scope=\"https://www.googleapis.com/auth/plus.login\">"
+"</span>"
+"</span>";

 public GooglePlusSignIn(String params) {
     Document document = Document.get();
     DivElement divElement = document.createDivElement();
     divElement.setInnerHTML(googleHtml);
     setElement(divElement); //important, widget needs to know it's root element
 }


 private static native void doJsMagic(Element element)/*-{ //notifies js about element
 }-*/;

 private static native void undoJsMagic(Element element)/*-{ 
    //notifies js that it should do some cleanup (if needed)
    //since it is unaware of GWT widget lifecycle

 }-*/;

 @Override
 public void onAttach() {
    super.onAttach();
    doJsMagic(getElement());
 }

 @Override
 public void onDetach() {
    super.onDetach();
//        undoJsMagic(getElement());
     }

}
4

2 回答 2

1

您的字符串中需要空格。span 和 class、\"g-signin\" 和 data-callback 等之间的空间。

另外,我假设您知道这一点,但您必须将 clientID 替换为开发人员控制台中的实际客户端 ID。

于 2014-08-21T03:44:28.903 回答
0

看起来你需要打电话$wnd.gapi.signin.go(element)doJsMagic但只做一次,在第一次附加。您无需在undoJsMagic.

于 2013-02-28T16:58:24.867 回答