1

私はgwtとsmartgwtの組み合わせを使用しています。ただし、ページが読み込まれるたびに次のエラーが発生します。これを修正するのを手伝ってください。。同じのポップアップエラーの画像の添付のスクリーンショットを見つけてください

15:06:02.097 [ERROR] [detectfiles] 15:06:02.097:TMR5:WARN:Log:Error:
    'Object required'
    in /sc/modules/ISC_Core.js
    at line 1782
    [c]Element.getOffsetLeft(_1=>[DIVElement]{ID:isc_0})
    [c]Element.getOffset(_1=>"left", _2=>[ImgButton ID:isc_ImgButton_0], _3=>undef, _4=>false, _5=>true)
    Canvas.getLeftOffset(_1=>undef)
    Canvas.getPageLeft()
    Canvas.$414(null, undef)
    [c]Page.handleEvent(_1=>null, _2=>"resize", _3=>undef)
    [c]EventHandler.$78p(_1=>"landscape")
    [c]EventHandler.$hr(_1=>undef)
    callback(undefined=>undef)
        "isc.EH.$hr()"
    [c]Class.fireCallback(_1=>"isc.EH.$hr()", _2=>undef, _3=>Array[0], _4=>Obj{length:2}, _5=>true) on [Class Timer]
    [c]Timer.$in(_1=>"$ir28")
    anonymous()
        "isc.Timer.$in('$ir28')"

com.smartgwt.client.core.JsObject$SGWT_WARN: 15:06:02.097:TMR5:WARN:Log:Error:
    'Object required'
    in /sc/modules/ISC_Core.js
    at line 1782
    [c]Element.getOffsetLeft(_1=>[DIVElement]{ID:isc_0})
    [c]Element.getOffset(_1=>"left", _2=>[ImgButton ID:isc_ImgButton_0], _3=>undef, _4=>false, _5=>true)
    Canvas.getLeftOffset(_1=>undef)
    Canvas.getPageLeft()
    Canvas.$414(null, undef)
    [c]Page.handleEvent(_1=>null, _2=>"resize", _3=>undef)
    [c]EventHandler.$78p(_1=>"landscape")
    [c]EventHandler.$hr(_1=>undef)
    callback(undefined=>undef)
        "isc.EH.$hr()"
    [c]Class.fireCallback(_1=>"isc.EH.$hr()", _2=>undef, _3=>Array[0], _4=>Obj{length:2}, _5=>true) on [Class Timer]
    [c]Timer.$in(_1=>"$ir28")
    anonymous()
        "isc.Timer.$in('$ir28')"
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:105)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)

同じのポップアップエラーの画像の添付のスクリーンショットを見つけてください

smart-gwtエラー

これは、ポップアップ内でTreeGridを使用しているコードです。

private PopupPanel createConsoPopup() {
    final PopupPanel consoPopup = new PopupPanel();
    consoPopup.setAnimationEnabled(true);
    consoPopup.setAutoHideEnabled(true);
    VerticalPanel consoContent = new VerticalPanel();
    VEPConsoTree consoTree = new VEPConsoTree(lineTreeNode, vepConsoTree);
    vepConsoTree = consoTree.getCheckStationTree();
    vepConsoTree.addSelectionChangedHandler(new SelectionChangedHandler() {
        @Override
        public void onSelectionChanged(SelectionEvent event) {
            ((TextBox)flexTable.getWidget(selectedRowNum,         0)).setText(vepConsoTree.getSelectedRecord().getAttribute("vepAreaName")+"_"+vepConsoTree.getSelectedRecord().getAttribute("checkStationName"));
            consoPopup.hide();

        }
    });
    consoContent.add(consoTree);
    consoPopup.add(consoContent);
    return consoPopup;
}

以下は私のVEPConsoTreeクラスです。

package com.renault.veppwrstats.client;

import com.google.gwt.user.client.ui.Composite;
import com.smartgwt.client.types.TreeModelType;
import com.smartgwt.client.widgets.events.DrawEvent;
import com.smartgwt.client.widgets.events.DrawHandler;
import com.smartgwt.client.widgets.tree.Tree;
import com.smartgwt.client.widgets.tree.TreeGrid;
import com.smartgwt.client.widgets.tree.TreeNode;

public class VEPConsoTree extends Composite {

private TreeNode[] lineTreeNode;
private TreeGrid vepConsoTree;
//private DFConstantsForLocale constants = GWT.create(DFConstantsForLocale.class);


/**
 * @param lineTreeNode
 * @param vepConsoTree
 */
public VEPConsoTree(TreeNode[] lineTreeNode, TreeGrid vepConsoTree) {
    super();
    this.lineTreeNode = lineTreeNode;
    this.vepConsoTree = vepConsoTree;
    //Grid grid = chckStatRestrictPanel();
    initWidget(vepConsoTree());
}

/**
 * This function creates checkStation Restriction Panel(tree) along with
 * Select/Unselect All button
 * 
 * @return
 */
private TreeGrid vepConsoTree() {
    return createTreeGrid();
}

/**
 * This function creates CheckStation Restriction Tree
 * 
 * @return {@link TreeGrid}
 */
private TreeGrid createTreeGrid() {
    final TreeGrid chckTreeGrid = new TreeGrid();
    chckTreeGrid.setHeight("269px");
    chckTreeGrid.setWidth("250px");
    chckTreeGrid.setData(createChkStationTree());
    //chckTreeGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
    //chckTreeGrid.setShowPartialSelection(false);
    //chckTreeGrid.setCascadeSelection(true);
    chckTreeGrid.setFolderIcon(null);
    chckTreeGrid.setNodeIcon(null);
    chckTreeGrid.setShowConnectors(true);
    chckTreeGrid.setShowHeader(false);
    //addSelectionChangeHndler(chckTreeGrid);
    chckTreeGrid.addDrawHandler(new DrawHandler() {
        public void onDraw(DrawEvent event) {
            chckTreeGrid.getTree().openAll();
        }
    });
    vepConsoTree = chckTreeGrid;
    return chckTreeGrid;
}

/**
 * This function creates a basic tree
 */
private Tree createChkStationTree() {
    Tree chckStationTree = new Tree();
    chckStationTree.setModelType(TreeModelType.PARENT);
    chckStationTree.setRootValue(1);
    chckStationTree.setIdField("id");
    chckStationTree.setOpenProperty("isOpen");
    chckStationTree.setData(lineTreeNode);
    chckStationTree.setParentIdField("parent");
    return chckStationTree;

}


/**
 * @return the vepConsoTree
 */
public final TreeGrid getCheckStationTree() {
    return vepConsoTree;
}

/**
 * @param vepConsoTree the vepConsoTree to set
 */
public final void setCheckStationTree(TreeGrid checkStationTree) {
    this.vepConsoTree = checkStationTree;
}

/**
 * @return the lineTreeNode
 */
public final TreeNode[] getLineTreeNode() {
    return lineTreeNode;
}

/**
 * @param lineTreeNode the lineTreeNode to set
 */
public final void setLineTreeNode(TreeNode[] lineTreeNode) {
    this.lineTreeNode = lineTreeNode;
}

}

4

1 に答える 1

0

簡単な答え: GWT と SmartGWT を混在させないでください。

Smart GWT と GWT ウィジェットを混在させることはできますか?

はい、注意事項があります。

Smart GWT には相互運用性サポートがあり、Smart GWT ウィジェットを GWT コンテナーに追加したり、GWT ウィジェットを Smart GWT コンテナーに追加したりできます。これを次の目的で使用するのが適切です。

Calendar や CubeGrid などの単一の洗練された Smart GWT コンポーネントを既存の GWT アプリケーションに導入するなど、Smart GWT への段階的な移行

Smart GWT には対応する組み込み機能がない Smart GWT 内で洗練されたサードパーティ GWT ウィジェットを使用する

ただし、スマート GWT と GWT (またはその他の) コンポーネントを自由に混在させることは意味がありません。たとえば、GWT コンテナー内にあるスマート GWT コンテナー内に GWT ウィジェットを配置するべきではありません。一般に、機能の必要性によって強制されない限り、ウィジェットを混在させないでください。

この理由は、2 つの Ajax ウィジェット キット (GWT を含む) が相互運用できる最大の程度に制限があるためです。タブ オーダー、zIndex 管理、ピクセル パーフェクト レイアウト、セクションの管理の領域で相互運用性を許可する標準はありません。 508 アクセシビリティとマルチレベル モダリティ。

GWT と Smart GWT を不適切に (つまり、これらのガイドラインに反して) 混ぜ合わせたときに報告された「バグ」は、一般に WONTFIX とマークされることに注意してください。相互運用性。

本当に GWT と SmartGWT を混在させる必要がある場合は、Isomorphic のガイドラインを参照してください。

Smart GWT のピクセル パーフェクトなレイアウトと自動サイズ設定のサポートは、単純な CSS レイアウトの機能を超えているため、コンポーネントは、親要素によって割り当てられた実際のピクセル幅を知る必要があります。サイズが指定されていない HTML 要素に「流れ込む」ことはできません。

ここでの問題は、GWT のコンテナーが Smart GWT の Canvas.getInnerWidth() に似た API を提供しないことです。これは、Smart GWT では子コンポーネントが自分自身を描画するために利用可能なスペースを見つけるために使用できるため、再帰的にそれらをレイアウトします自分の子供。また、GWT コンテナーは、サイズが変更されたとき、またはさまざまな理由 (スクロールバーが導入された、または CSS スタイルの変更によって境界線が追加されてスペースが縮小されたなど) で使用可能な幅が変更されたときに、イベントを発生させません。

拡張可能なピクセル パーフェクトなレイアウト システムを実際に作成するには、多くの親子間の調整とシグナリングが必要です。Smart GWT/SmartClient は、サードパーティのウィジェットを Canvas 内に埋め込んで正確なレイアウトに参加させるために必要なすべてのフックを実装していますが、GWT はまだ実装されていません。

Smart GWT インターフェースを GWT コンテナー内に絶対に配置する必要があり、コンテナーをいっぱいにしたい場合、最良の方法は、ウィンドウ レベルのサイズ変更イベントをリッスンし、最終的に最上位で resizeTo() を呼び出す独自のレイアウト計算を実行することです。スマート GWT ウィジェット。その最上位のウィジェットの下にネストされたすべての Smart GWT ウィジェットは、レイアウトを通常どおり処理します。

注: Smart GWT のレンダリングされた HTML に width:100% を挿入する方法を探す必要はありません。これは機能しません。

ソース: http://forums.smartclient.com/showthread.php?t=8159

于 2012-05-28T22:14:42.140 に答える