Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    CanvasItem, Uncaught exception escaped

    Hallo,
    I'm try to add a CanvasItem to the DynamicForm

    but i get following exceptions

    SmartGWT 2.2
    FireFox 3.6.6
    Win7x64
    HostedMode

    in Browser:
    Code:
    Uncaught exception escaped : com.google.gwt.core.client.JavaScriptException
    (TypeError): this.form is null
     fileName: http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js
     lineNumber: 1379
     stack: isc_FormItem_isDisabled()@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:1379
    isc_FormItem_iconIsDisabled([object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:1388
    isc_FormItem__setUpIcon([object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:1014
    isc_FormItem__setUpIcons()@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:1013
    isc_FormItem_init([object Object],(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0))@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:748
    isc_c_Class_invokeSuper(null,"init")@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Core.js:265
    isc_c_Class_Super("init",[object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Core.js:257
    isc_TextItem_init([object Object],(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0),(void 0))@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:1740
    isc_Class_completeCreation([object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Core.js:322
    isc_DynamicForm_createItem([object Object],"TextItem")@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:277
    isc_DynamicForm__addItems([object Array],null,true,(void 0))@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:264
    isc_DynamicForm_setItems([object Array])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:253
    isc_DynamicForm_setFields([object Array])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Forms.js:254
    isc_Class_setProperties([object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Core.js:346
    isc_Class_setProperty("fields",[object Array])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/sc/modules/ISC_Core.js:344
    ("fields",[object Array])@http://localhost:8080:293
    @:0
    ([object GWTJavaObject],25690113,[object XMLHttpRequest])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/hosted.html?de_it_p_kaso_gwt_Frontend:56
    ([object Event])@http://localhost:8080:84
    ((function () {__gwt_makeJavaInvoke(1)(handler, 25690113, _this);}),[object XMLHttpRequest],[object Object])@http://localhost:8080:72
    @:0
    (null,27,(function () {__gwt_makeJavaInvoke(1)(handler, 25690113, _this);}),[object XMLHttpRequest],[object Object])@http://localhost:8080/kaso/de.it_p.kaso.gwt.Frontend/hosted.html?de_it_p_kaso_gwt_Frontend:56
    ([object Event])@http://localhost:8080:3
    
    See the Development console log for details.
    Register a GWT.setUncaughtExceptionHandler(..) for custom uncaught exception handling.
    in GWT Development Mode(Console)
    Code:
    00:23:56,285 [ERROR] 12:56:31.916:WARN:Log:ClassFactory.addGlobalID: ID:'isc_TextItem_49' for object '[TextItem ID:isc_TextItem_49 name:isc_SearchTextItemAF4J_0]' collides with ID of existing object '[TextItem ID:isc_TextItem_49 name:isc_TextItemAF4J_51]'. The global reference to this object will be replaced
    com.smartgwt.client.core.JsObject$SGWT_WARN: 12:56:31.916:WARN:Log:ClassFactory.addGlobalID: ID:'isc_TextItem_49' for object '[TextItem ID:isc_TextItem_49 name:isc_SearchTextItemAF4J_0]' collides with ID of existing object '[TextItem ID:isc_TextItem_49 name:isc_TextItemAF4J_51]'. The global reference to this object will be replaced 
    at sun.reflect.GeneratedConstructorAccessor23.newInstance(Unknown Source) 
    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:157) 
    at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:284) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107) 
    at com.smartgwt.client.widgets.BaseWidget.setProperty(BaseWidget.java) 
    at com.smartgwt.client.widgets.BaseWidget.setAttribute(BaseWidget.java:611) 
    at com.smartgwt.client.widgets.form.DynamicForm.setFields(DynamicForm.java:2444) 
    at de.it_p.kaso.gwt.client.af4j.DynamicFormAF4J.addField(DynamicFormAF4J.java:32) 
    at de.it_p.kaso.gwt.client.main.controller.layout.widgets.ThreeFormColumnOneButtonRowLayoutSmartGWT.addComponentToPanels(ThreeFormColumnOneButtonRowLayoutSmartGWT.java:140) 
    at de.it_p.kaso.gwt.client.main.controller.layout.widgets.ThreeFormColumnOneButtonRowLayoutSmartGWT.addComponent(ThreeFormColumnOneButtonRowLayoutSmartGWT.java:108) 
    at de.it_p.kaso.gwt.client.main.controller.search.SearchControllerSmartGWT$8.onSuccess(SearchControllerSmartGWT.java:593) 
    at de.it_p.kaso.gwt.client.main.controller.search.SearchControllerSmartGWT$8.onSuccess(SearchControllerSmartGWT.java:1) 
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216) 
    at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287) 
    at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:396) 
    at sun.reflect.GeneratedMethodAccessor73.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713) 
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165) 
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507) 
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264) 
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) 
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java) 
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188) 
    at sun.reflect.GeneratedMethodAccessor69.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) 
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) 
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157) 
    at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668) 
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401) 
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222) 
    at java.lang.Thread.run(Thread.java:619)
    this is my code

    Code:
    public class MultiSearchItemAF4J extends CanvasItem implements ChangedHandler
    {
    
    	
    
    	private DynamicForm			form				= new DynamicForm();
    	private ComboBoxItemAF4J	comboBoxItem	= new ComboBoxItemAF4J();
    	private TextItemAF4J			textItem			= new TextItemAF4J();
    	private ListGridField[]		listGridFields;
    	private String					textItemFieldName;
    	private String					comboBoxFieldName;
    	private BaseDataSource<?>	dataSource;
    	private String					title;
    
    	/**
    	 * only for test
    	 */
    	@Deprecated 
    	public MultiSearchItemAF4J()
    	{	
    		setTitle(title);
    		comboBoxItem.setShowTitle(false);
    		comboBoxItem.setWidth("*");
    		comboBoxItem.setName("comboBoxItem_my1");
    		
    
    		textItem.setShowTitle(false);		
    		textItem.setDisabled(true);
    		textItem.setWidth("*");
    		textItem.setName("textItem_my2");
    
    		form.setFields(comboBoxItem, textItem);
    		form.setWidth("*");
    		//Per default		
    		form.setColWidths("40%", "60%");
    		form.setID("formitem_my1");
    		setName("multisearchitem_my1");
    		
    		setCanvas(form);
    
    	}
    
    	@Override
    	public void onChanged(ChangedEvent event)
    	{
    		if (comboBoxItem.getValue() != null)
    		{
    			selectValue();
    
    			comboBoxItem.fetchData(new DSCallback()
    			{
    
    				@Override
    				public void execute(DSResponse response, Object rawData, DSRequest request)
    				{
    					selectValue();
    				}
    			});
    			//			
    		}
    		else
    		{
    			// staat.setValue("");
    			textItem.clearValue();
    		}
    
    	}
    
    	private void selectValue()
    	{
    		if (comboBoxItem.getSelectedRecord() != null)
    		{
    			ListGridRecord lg = (ListGridRecord) comboBoxItem.getSelectedRecord();
    			if (lg != null)
    			{
    				textItem.setValue(lg.getAttribute(textItemFieldName));
    			}
    		}
    		else
    		{
    			textItem.clearValue();
    		}
    	}
    
    	/**
    	 * Liefert den Wert aus der ComboBox.
    	 */
    	@Override
    	public Object getValue()
    	{
    		return comboBoxItem.getValue();
    	}
    
    	@Override
    	public void setValue(boolean value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	@Override
    	public void setValue(Date value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	@Override
    	public void setValue(double value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	@Override
    	public void setValue(float value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	@Override
    	public void setValue(int value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	@Override
    	public void setValue(String value)
    	{
    		comboBoxItem.setValue(value);
    	}
    
    	public DynamicForm getForm()
    	{
    		return form;
    	}
    
    	public void setForm(DynamicForm form)
    	{
    		this.form = form;
    	}
    
    	/**
    	 * Liefert das
    	 * 
    	 * @return
    	 */
    	public ComboBoxItemAF4J getComboBoxItem()
    	{
    		return comboBoxItem;
    	}
    
    	public void setComboBoxItem(ComboBoxItemAF4J comboBoxItem)
    	{
    		this.comboBoxItem = comboBoxItem;
    	}
    
    	public TextItemAF4J getTextItem()
    	{
    		return textItem;
    	}
    
    	public void setTextItem(TextItemAF4J textItem)
    	{
    		this.textItem = textItem;
    	}
    
    }
    Code:
    DynamicFormAF4J  myForm = new DynamicFormAF4J ();
    .....
    
    myForm.addField(new MultiSearchItemAF4J());
    
    .....

    Code:
    public class DynamicFormAF4J extends DynamicForm{
    
    	public DynamicFormAF4J() {
    		super();
    //		setIsGroup(true);
    	}
    
    	public DynamicFormAF4J(JavaScriptObject jsObj) {
    		super(jsObj);
    		// TODO Auto-generated constructor stub
    	}
    	
    	public void addField(FormItem formItem) {
    	    List<FormItem> fields = new ArrayList<FormItem>(Arrays.asList(this.getFields()));
    	    fields.add(formItem);
    	    FormItem[] formItems =fields.toArray(new FormItem[fields.size()]); 
    	    this.setFields(formItems);
    	}
    
    }

    #2
    I also get this message when trying to tab into a ListGrid field where the grid field I'm tabbing into is backed by an EditorType implemented by a class extending CanvasItem.

    What happens is that the user presses tab - and the list grid looses the editable state.

    When debugging in eclipse, I see this exception:

    [ERROR] [cloudview] - 15:33:25.169:IFCS8:WARN:Log:TypeError: this.form is null
    Stack from error.stack:
    CanvasItem.canvasFocusChanged() @ /sc/modules/ISC_Forms.js:1196
    ...
    unnamed() @


    I am testing with the following MyItem class:

    Code:
    public class MyItem extends CanvasItem
    {
      public MyItem(String name)
      {
        setName(name);
        final DynamicForm f = new DynamicForm();
        TextItem s = new TextItem("theNewItem");
        s.addChangedHandler(new ChangedHandler()
        {
          @Override
          public void onChanged(ChangedEvent event)
          {
            setValue(event.getValue().toString());
          }
        });
        f.setItems(s);
        setCanvas(f);
      }
    
      @Override
      public void setValue(String value)
      {
        super.setValue(value);
      }
    
      @Override
      public Object getValue()
      {
        return super.getValue();
      }
    };
    Any ideas?

    Comment


      #3
      Adding a ChangeHandler that calls setValue woth the current value doesn't make much sense - at best it's a no-op. It wouldn't cause this issue however - try creating a runnable test case that reproduces the issue, and don't forget all the version information the forums asks for.

      Comment

      Working...
      X