获取 clientBundleFieldNameUnlikelyToCollideWithUserSpecifiedFieldOkay 不是函数

Getting clientBundleFieldNameUnlikelyToCollideWithUserSpecifiedFieldOkay is not a function

我遇到以下异常:

Caused by: com.google.gwt.core.client.JavaScriptException: (TypeError) : $tmp_0_g$.get_clientBundleFieldNameUnlikelyToCollideWithUserSpecifiedFieldOkay_28_g$(...).style_129_g$ is not a function
    at Unknown.fBj_g$(BillingOverviewView_BinderImpl.java:75)
    at Unknown.KPi_g$(BillingOverviewView_BinderImpl.java:43)
    at Unknown.GPi_g$(BillingOverviewView_BinderImpl.java:31)
    at Unknown.HPi_g$(BillingOverviewView_BinderImpl.java:28)
    at Unknown.APi_g$(BillingOverviewView.java:34)

但仅限于 Firefox。它在 Chrome 中没有任何问题地工作。

这是堆栈跟踪中提到的视图:

class BillingOverviewView extends ViewWithUiHandlers<BillingOverviewUiHandlers> implements BillingOverviewPresenter.MyView {

    @SuppressWarnings("unused")
    private final static Logger LOGGER = Logger.getLogger(BillingOverviewView.class.getName());

    interface Binder extends UiBinder<Widget, BillingOverviewView> {
    }

    @UiField MaterialRow rowShops;

    @Inject
    BillingOverviewView(Binder uiBinder) {
        this.initWidget(uiBinder.createAndBindUi(this));
    }

    @Override
    public void clearShopCards() {
        this.rowShops.clear();
    }

    @Override
    public void addShopCard(MyView view) {
        MaterialColumn colShop = new MaterialColumn(12, 12, 12);
        colShop.add(view);
        this.rowShops.add(colShop);
    }

}

知道这是从哪里来的吗?为什么我只在 Firefox 中得到这个?

我实际操作 ID 的唯一地方是这里:

@Inject
PaymentMethodTabView(Binder uiBinder) {

    String id = HTMLPanel.createUniqueId();

    this.btnPaymentMethod = new MaterialButton();
    this.btnPaymentMethod.setText("PM");
    this.btnPaymentMethod.setActivates(id);

    this.dpPaymentMethod = new MaterialDropDown(id);
    this.dpPaymentMethod.setConstrainWidth(false);

    this.dpPaymentMethod.addSelectionHandler(new SelectionHandler<Widget>() {
        @Override
        public void onSelection(SelectionEvent<Widget> event) {
            if(!(event.getSelectedItem() instanceof CreditCardDropDownItem)) {
                return;
            }
            CreditCardDropDownItem item = ((CreditCardDropDownItem)event.getSelectedItem());
            CreditCard creditCard = PaymentMethodTabView.this.tokenToCreditCard.get(item.getToken());
            PaymentMethodTabView.this.onSelection(creditCard);
        }
    });

    this.initWidget(uiBinder.createAndBindUi(this));

    this.creditCardContainer.setWidget(this.creditCardWidget);
}

但如您所见,我正在使用 HTMLPanel.createUniqueId() 来确保我获得唯一 ID。

有什么想法吗?

为此添加 gss="true"

<ui:style gss="true">

.shop-panel {
    margin: 30px;
    padding: 30px;

    border-style: solid;
    border-right: 0;
    border-left: 0;
    border-width: 1px;
    border-color: #AAAAAA;
}

.main-content {
    height: 100%;
    overflow: auto;
}

</ui:style>

成功了。