使用smart-gwt时出现javascript错误

时间:2012-05-25 09:38:17

标签: exception gwt smartgwt

我正在使用gwt和smart gwt的组合。但是,只要我的页面加载,我就会得到以下错误。请帮我解决这个问题。 。 请找到相同

的弹出错误图像的附加屏幕截图
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)

Please find the attached screenshot for the image of the popup error for the same

smart-gwt error

这是一段代码,我在弹出窗口中使用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;
}

}

1 个答案:

答案 0 :(得分:0)

简短回答:不要混用GWT和SmartGWT

  

我可以混用Smart GWT和GWT小部件吗?

     

是的,有警告。

     

Smart GWT具有互操作性支持,允许Smart GWT小部件   要添加到GWT容器并允许添加GWT窗口小部件   一个Smart GWT容器,适合用于:

     

增量迁移到Smart GWT,例如引入单数,   复杂的Smart GWT组件,如Calendar或CubeGrid   现有的GWT申请

     

在Smart GWT中使用复杂的第三方GWT小部件,其中   Smart GWT没有相应的内置功能

     

然而,自由混合Smart GWT和GWT是没有意义的   (或其他)组件,例如,您不应放置GWT   Smart GWT容器中的小部件,它们又在GWT内   容器。一般情况下,除非需要a,否则不要混用小部件   特征迫使你去。

     

原因是最大程度有限制   两个Ajax小部件工具包(包括GWT)可以互操作 - 有   没有允许在管理领域实现互操作性的标准   选项卡顺序,zIndex管理,像素完美布局,第508节   可访问性和多级模态。

     

请注意,在混合GWT和Smart GWT时会报告“错误”   不恰当地(也就是说,与这些指导方针相矛盾)   一般会被标记为WONTFIX,虽然我们会重新考虑这个   未来,如果核心GWT开始支持更好的API   互操作性。

如果你真的需要混合GWT和SmartGWT这里是Isomorphic的指南

  

因为Smart GWT的像素完美布局和自动调整支持   超出简单CSS布局的能力,组件需要知道   它们由父级分配的实际像素宽度   元件;他们不能“流入”未指定大小的HTML元素。

     

这里的问题是GWT的容器不提供类似的API   到Smart GWT的Canvas.getInnerWidth(),可以使用Smart GWT   通过子组件找出可用于绘制自己的空间   在,并因此递归地布置自己的孩子。 GWT也不做   容器在调整大小或可用时触发事件   宽度因各种原因而变化(例如,引入的滚动条,或   CSS样式更改会添加边框,从而减少空间。)

     

需要许多父< - >子协调和信令   真正创建一个可扩展的像素完美布局系统。聪明   GWT / SmartClient实现了所有必要的钩子以允许a   要嵌入Canvas并参与的第三方窗口小部件   精确的布局,但GWT还没有。

     

如果您绝对必须在GWT中放置Smart GWT接口   容器,你希望它填充容器,最好的方法是   监听窗口级别的resize事件并运行自己的布局   计算最终调用最高Smart GWT上的resizeTo()   小部件。嵌套在最顶层小部件下的所有Smart GWT小部件都将   然后正常处理布局。

     

注意:不要试图找到插入宽度的方法:100%进入   Smart GWT呈现HTML,这不起作用。

来源:http://forums.smartclient.com/showthread.php?t=8159