Hello:
  I am working in a project with GWT (RF, Editors, MVP).
  I have an error with bind of Editor

 The error itself, is that address property is not sent, not sent values
with flush is called in method save of *TerceroNewEditorPresenter*. The
unique values that are sent, are those that correspond to *Tercero (name and
lastName). *

 Attached files to see and guide me in the error.

 Thank you very much and sorry for my English.


A.U.S Cristian Rinaldi

Teléfono Móvil: (0342) 155 238 083

www.logikas.com

Lisandro de la Torre 2643 Of 5 - 3000 - Santa Fe

Teléfono Fijo: (0342) 483 5138

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

/**
 * 
 */
package com.logikas.erp.client.ui;

import com.google.gwt.user.client.ui.HasConstrainedValue;

import com.logikas.erp.client.activity.presenter.MutablePresenter;
import com.logikas.erp.shared.proxy.CityProxy;

/**
 * Package: com.logikas.erp.client.ui
 * File:    AddressView.java
 * Date:    11/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public interface AddressView extends View{
  
  public interface Presenter extends MutablePresenter<AddressView>{
    
  }
  
  HasConstrainedValue<CityProxy> getCitys(); 
  
}
/**
 * 
 */
package com.logikas.erp.client.ui;

import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.client.IsEditor;
import com.google.gwt.user.client.ui.HasConstrainedValue;

import com.logikas.erp.client.activity.presenter.NavigationPresenter;
import com.logikas.erp.shared.proxy.CityProxy;

/**
 * Package: com.logikas.erp.client.ui
 * File:    SelectorCityView.java
 * Date:    11/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public interface SelectorCityView extends IsEditor<Editor<CityProxy>>, View{
  
  public interface Presenter extends NavigationPresenter<SelectorCityView>{}
  
  HasConstrainedValue<CityProxy> getListCity();

}
/**
 * 
 */
package com.logikas.erp.client.ui;

import com.google.gwt.editor.client.Editor;
import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryEditorDriver;
import com.google.web.bindery.requestfactory.shared.RequestFactory;

import com.logikas.erp.client.activity.presenter.MutablePresenter;
import com.logikas.erp.shared.proxy.TercerosProxy;

/**
 * Package: com.logikas.erp.client.ui File: TerceroView.java Date: 11/10/2011
 * 
 * Representa el formulario de carga de la informacion asociada a un tercero
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public interface TerceroNewView extends View {
  
  public interface Presenter extends MutablePresenter<TerceroNewView>{
    
  }
 
  AddressView getAddressView();

  RequestFactoryEditorDriver<TercerosProxy, ? extends Editor<TercerosProxy>> createEditorDriver(
      RequestFactory rf);

}
/**
 * 
 */
package com.logikas.erp.client.ui;

import com.google.gwt.user.client.ui.IsWidget;

/**
 * Package: com.logikas.erp.client.ui File: View.java Date: 03/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public interface View extends IsWidget {
  
  
  
  
}
/**
 * 
 */
package com.logikas.erp.client.ui.impl;

import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.ui.client.ValueBoxEditorDecorator;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasConstrainedValue;
import com.google.gwt.user.client.ui.Widget;

import com.logikas.erp.client.Constans;
import com.logikas.erp.client.ui.AddressView;
import com.logikas.erp.client.ui.SelectorCityView;
import com.logikas.erp.shared.proxy.AddressProxy;
import com.logikas.erp.shared.proxy.CityProxy;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * Package: com.logikas.erp.client.ui.impl File: AddressWidget.java Date: 11/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class AddressEditor implements AddressView, Editor<AddressProxy> {

  private static AddressWidgetUiBinder uiBinder = GWT.create(AddressWidgetUiBinder.class);

  private HTMLPanel root;

  private AddressView.Presenter presenter;

  @UiField
  ValueBoxEditorDecorator<String> address;

  @UiField
  ValueBoxEditorDecorator<Integer> number;

  @UiField
  ValueBoxEditorDecorator<String> code;

  @UiField(provided = true)
  SelectorCityView city;

  interface AddressWidgetUiBinder extends UiBinder<HTMLPanel, AddressEditor> {
  }

  @Inject
  public AddressEditor(
      AsyncProvider<SelectorCityView> selectorCity,
      @Named(Constans.AddressNewPresenter) AddressView.Presenter presenter) {
    
    this.presenter = presenter;
    
    // TODO ver si hay otra forma de inicializar las vistas
    selectorCity.get(new AsyncCallback<SelectorCityView>() {
      @Override
      public void onSuccess(SelectorCityView result) {
        city = result;
        init();
      }

      @Override
      public void onFailure(Throwable caught) {
      }
    });
  }
  
  private void init(){
    root = uiBinder.createAndBindUi(this);
    presenter.onCreate(this);
  }

  @Override
  public Widget asWidget() {
    return root;
  }

  @Override
  public HasConstrainedValue<CityProxy> getCitys() {
    return city.getListCity();
  }

}
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
	xmlns:g="urn:import:com.google.gwt.user.client.ui" 
	xmlns:l="urn:import:com.logikas.erp.client.ui"
	xmlns:e="urn:import:com.google.gwt.editor.ui.client">

	<g:HTMLPanel>

		<label for="name">Name:</label>
		<e:ValueBoxEditorDecorator ui:field="address">
			<e:valuebox>
				<g:TextBox />
			</e:valuebox>
		</e:ValueBoxEditorDecorator>

		<label for="number">Number:</label>
		<e:ValueBoxEditorDecorator ui:field="number">
			<e:valuebox>
				<g:IntegerBox />
			</e:valuebox>
		</e:ValueBoxEditorDecorator>

		<label for="code">Code:</label>
		<e:ValueBoxEditorDecorator ui:field="code">
			<e:valuebox>
				<g:TextBox />
			</e:valuebox>
		</e:ValueBoxEditorDecorator>
		
		<!-- l:CityListBox ui:field="city"></l:CityListBox-->

		<l:SelectorCityView ui:field="city"></l:SelectorCityView>

	</g:HTMLPanel>
</ui:UiBinder> 
/**
 * 
 */
package com.logikas.erp.client.ui.impl;

import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasConstrainedValue;
import com.google.gwt.user.client.ui.Widget;

import com.logikas.erp.client.Constans;
import com.logikas.erp.client.place.SearchCityPlace;
import com.logikas.erp.client.resources.ClientResource;
import com.logikas.erp.client.ui.SelectorCityView;
import com.logikas.erp.client.ui.widget.CityListBox;
import com.logikas.erp.shared.proxy.CityProxy;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * Package: com.logikas.erp.client.ui.impl File: SelectorCityWidget.java Date: 11/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class SelectorCityWidget implements SelectorCityView {

  private static SelectorCityWidgetUiBinder uiBinder = GWT.create(SelectorCityWidgetUiBinder.class);

  interface SelectorCityWidgetUiBinder extends UiBinder<HTMLPanel, SelectorCityWidget> {
  }
  
  private HTMLPanel root;
  
  @UiField
  ClientResource res;
  
  @UiField
  CityListBox cityListBox;
  
  @UiField
  Button searchCity;
  
  @UiField
  Button newCity;
  
  private final SelectorCityView.Presenter presenter;
  
  @Inject
  public SelectorCityWidget( 
    final @Named(Constans.SelectorCityPresenter) SelectorCityView.Presenter presenter ) {
    
    root = uiBinder.createAndBindUi(this);
    
    res.erpLgkStyle().ensureInjected();

    this.presenter = presenter;
    
    this.presenter.onCreate(this);
    
  }
  
  @Override
  public HasConstrainedValue<CityProxy> getListCity() {
    return cityListBox;
  }

  @Override
  public Widget asWidget() {
    return root;
  }
 
  @Override
  public Editor<CityProxy> asEditor() {
    return cityListBox.asEditor();
  }
  
  @UiHandler("searchCity")
  void onSearchCityClick(ClickEvent event) {
    presenter.goTo(new SearchCityPlace(true));
  }
}
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
	xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:l="urn:import:com.logikas.erp.client.ui.widget">

	<ui:with field='res'
		type='com.logikas.erp.client.resources.ClientResource' />

	<g:HTMLPanel>
		<div class="{res.erpLgkStyle.borders}">
			<l:CityListBox ui:field="cityListBox"></l:CityListBox>
			<g:Button stylePrimaryName="{res.erpLgkStyle.button}" addStyleNames="{res.erpLgkStyle.gray}"
				ui:field="searchCity">Search</g:Button>
			<g:Button stylePrimaryName="{res.erpLgkStyle.button}" addStyleNames="{res.erpLgkStyle.gray}"
				ui:field="newCity">New</g:Button>
		</div>
	</g:HTMLPanel>
</ui:UiBinder> 
/**
 * 
 */
package com.logikas.erp.client.ui.impl;

import com.google.gwt.core.client.GWT;
import com.google.gwt.editor.client.Editor;
import com.google.gwt.editor.ui.client.ValueBoxEditorDecorator;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.name.Named;
import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryEditorDriver;
import com.google.web.bindery.requestfactory.shared.RequestFactory;

import com.logikas.erp.client.Constans;
import com.logikas.erp.client.resources.ClientResource;
import com.logikas.erp.client.ui.AddressView;
import com.logikas.erp.client.ui.TerceroNewView;
import com.logikas.erp.shared.proxy.TercerosProxy;

import javax.inject.Inject;


/**
 * Package: com.logikas.erp.client.ui.impl File: TerceroEditor.java Date: 09/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class TerceroEditor implements TerceroNewView, Editor<TercerosProxy> {

  private static TerceroEditorUiBinder uiBinder = GWT.create(TerceroEditorUiBinder.class);

  interface TerceroEditorUiBinder extends UiBinder<SimplePanel, TerceroEditor> {
  }

  interface Driver extends RequestFactoryEditorDriver<TercerosProxy, TerceroEditor> {
  }

  private SimplePanel root;

  @UiField
  ClientResource res;

  @UiField
  ValueBoxEditorDecorator<String> name;

  @UiField
  ValueBoxEditorDecorator<String> lastName;

  @UiField(provided = true)
  AddressView address;
 
  private final TerceroNewView.Presenter presenter;

  @Inject
  public TerceroEditor(
      AsyncProvider<AddressView> addressView,
      @Named(Constans.TerceroNewPresenter) TerceroNewView.Presenter presenter) {

    this.presenter = presenter;
    
    //TODO ver si existe otra forma de inicializar las vistas
    addressView.get(new AsyncCallback<AddressView>() {
      @Override
      public void onSuccess(AddressView result) {
        address = result;
        ini();
      }
      @Override
      public void onFailure(Throwable caught) {
      }
    });
    
    //Inyeccion del presenter
    
    //Creacion de la interface por parte del Editor,
    
  }
  
  private void ini(){
  //Inicializacion de la interface grafica
    root = uiBinder.createAndBindUi(this);
    res.erpLgkStyle().ensureInjected();
    presenter.onCreate(this);
  }

  @Override
  public RequestFactoryEditorDriver<TercerosProxy, ? extends Editor<TercerosProxy>> createEditorDriver(
      RequestFactory rf) {

    Driver driver = GWT.create(Driver.class);
    driver.initialize(rf, this);
    return driver;
  }

  @Override
  public Widget asWidget() {
    return root;
  }

  @Override
  public AddressView getAddressView() {
    return address;
  }

  @UiHandler("save")
  void onSaveClick(ClickEvent event) {
    this.presenter.save();
  }

  @UiHandler("cancel")
  void onCancelClick(ClickEvent event) {
  }
}
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent";>
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
	xmlns:g="urn:import:com.google.gwt.user.client.ui"
	xmlns:e="urn:import:com.google.gwt.editor.ui.client"
	xmlns:l="urn:import:com.logikas.erp.client.ui">

	<ui:with field='res'
		type='com.logikas.erp.client.resources.ClientResource' />

	<g:SimplePanel>

		<g:HTMLPanel>
			<label for="name">Nombre:</label>
			<e:ValueBoxEditorDecorator ui:field="name">
				<e:valuebox>
					<g:TextBox />
				</e:valuebox>
			</e:ValueBoxEditorDecorator>

			<label for="lastname">Apellido:</label>
			<e:ValueBoxEditorDecorator ui:field="lastName">
				<e:valuebox>
					<g:TextBox />
				</e:valuebox>
			</e:ValueBoxEditorDecorator>


			<fieldset class="{res.erpLgkStyle.borders}">
				<legend>Address:</legend>
				<l:AddressView ui:field="address"></l:AddressView>
			</fieldset>

			<div class="{res.erpLgkStyle.buttons}">
				<g:Button stylePrimaryName="{res.erpLgkStyle.button}" addStyleNames="{res.erpLgkStyle.blue}" ui:field="save">Save</g:Button>
				<g:Button stylePrimaryName="{res.erpLgkStyle.button}" addStyleNames="{res.erpLgkStyle.blue}" ui:field="cancel">Cancel</g:Button>
			</div>
		</g:HTMLPanel>
	</g:SimplePanel>
</ui:UiBinder> 
/**
 * 
 */
package com.logikas.erp.client.activity.presenter;

import com.google.gwt.editor.client.Editor;
import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.web.bindery.requestfactory.gwt.client.RequestFactoryEditorDriver;
import com.google.web.bindery.requestfactory.shared.Receiver;
import com.google.web.bindery.requestfactory.shared.RequestContext;
import com.google.web.bindery.requestfactory.shared.Violation;

import com.logikas.erp.client.place.DefaultPlace;
import com.logikas.erp.client.ui.TerceroNewView;
import com.logikas.erp.shared.proxy.AddressProxy;
import com.logikas.erp.shared.proxy.CityProxy;
import com.logikas.erp.shared.proxy.TercerosProxy;
import com.logikas.erp.shared.request.ErpRequestFactory;
import com.logikas.erp.shared.request.TercerosRequest;

import org.apache.jasper.compiler.ErrorHandler;

import java.util.List;
import java.util.Set;

import javax.inject.Inject;
import javax.validation.ConstraintViolation;

/**
 * Package: com.logikas.erp.client.presenter File: TerceroEditorPresenter.java Date: 12/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class TerceroNewEditorPresenter implements TerceroNewView.Presenter {

  private final PlaceController placeController;
  private final ErpRequestFactory requestFactory;
  
  private RequestFactoryEditorDriver<TercerosProxy, ? extends Editor<TercerosProxy>> terceroDriver;

  @Inject
  public TerceroNewEditorPresenter(final AddressNewPresenter addressPresenter,
      final ErpRequestFactory requestFactory, final PlaceController placeController) {

    this.placeController = placeController;
    this.requestFactory = requestFactory;
  }

  @Override
  public void goTo(Place place) {
    placeController.goTo(place);
  }

  @Override
  public void save() {

    RequestContext context = terceroDriver.flush();

    boolean hasClientErrors = terceroDriver.hasErrors();

    if (!hasClientErrors) {

      context.fire(new Receiver<Void>() {

        @Override
        public void onSuccess(Void response) {
          placeController.goTo(new DefaultPlace());
        }
        
        /* (non-Javadoc)
         * @see com.google.web.bindery.requestfactory.shared.Receiver#onViolation(java.util.Set)
         */
        @Override
        public void onViolation(Set<Violation> errors) {
          terceroDriver.setViolations(errors);
        }

        @Override
        public void onConstraintViolation(Set<ConstraintViolation<?>> violations) {

          terceroDriver.setConstraintViolations(violations);
        }

      });
    }
  }
  
  @Override
  public void onCreate(final TerceroNewView view) {

    terceroDriver = view.createEditorDriver(requestFactory);

    requestFactory.getCityRequest().findAll().fire(new Receiver<List<CityProxy>>() {

      @Override
      public void onSuccess(List<CityProxy> citys) {
        view.getAddressView().getCitys().setAcceptableValues(citys);

        TercerosRequest context = requestFactory.getTercerosRequest();

        TercerosProxy tercero = context.create(TercerosProxy.class);

        AddressProxy address = context.create(AddressProxy.class);

   //     address.setVersion(new Long(0));

        tercero.setAddress(address);

  //      tercero.setVersion(new Long(0));

        context.persist(tercero).with(terceroDriver.getPaths());

        terceroDriver.edit(tercero, context);
      }
    });
  }
  
  @Override
  public void delete() {
    // TODO Auto-generated method stub
  }

  @Override
  public void onPause() {
  }

  @Override
  public void onStop() {
  }

  @Override
  public void setContentView(final AcceptsOneWidget container) {
   //
  }

}
/**
 * 
 */
package com.logikas.erp.client.activity.presenter;

import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;

import com.logikas.erp.client.ui.AddressView;

import javax.inject.Inject;

/**
 * Package: com.logikas.erp.client.presenter File: AddressPresenter.java Date: 18/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class AddressNewPresenter implements AddressView.Presenter {

  private final PlaceController placeController;

  @Inject
  public AddressNewPresenter(
      final PlaceController placeController) {

    this.placeController = placeController;
  }

  @Override
  public void goTo(Place place) {
    placeController.goTo(place);

  }
 
  @Override
  public void save() {
  }

  @Override
  public void delete() {
  }

  @Override
  public void onCreate(AddressView view) {
  }

  @Override
  public void onPause() {
  }

  @Override
  public void onStop() {
  }

  @Override
  public void setContentView(AcceptsOneWidget container) {
  }
}
/**
 * 
 */
package com.logikas.erp.client.activity.presenter;

import com.google.gwt.place.shared.Place;
import com.google.gwt.place.shared.PlaceController;
import com.google.gwt.user.client.ui.AcceptsOneWidget;
import com.google.inject.Provider;
import com.google.web.bindery.requestfactory.shared.Receiver;

import com.logikas.erp.client.ui.SelectorCityView;
import com.logikas.erp.shared.proxy.CityProxy;
import com.logikas.erp.shared.request.ErpRequestFactory;

import java.util.List;

import javax.inject.Inject;

/**
 * Package: com.logikas.erp.client.presenter File: SelectorCityPresenter.java Date: 13/10/2011
 * 
 * @autor cristian - Logikas Conectando Ideas
 */
public class SelectorCityPresenter implements SelectorCityView.Presenter {

  private final PlaceController placeController;
  private final ErpRequestFactory requestFactory;

  @Inject
  public SelectorCityPresenter(final PlaceController placeController, final ErpRequestFactory requestFactory) {
    this.placeController = placeController;
    this.requestFactory = requestFactory;
  }
  
  @Override
  public void goTo(Place place) {
    placeController.goTo(place);
  }

  @Override
  public void onCreate(final SelectorCityView view) {
    requestFactory.getCityRequest().findAll().fire(new Receiver<List<CityProxy>>() {
      @Override
      public void onSuccess(List<CityProxy> response) {
        view.getListCity().setAcceptableValues(response);
      }
    });
  }

  @Override
  public void onPause() {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void onStop() {
    // TODO Auto-generated method stub
    
  }

  @Override
  public void setContentView(AcceptsOneWidget container) {
    // TODO Auto-generated method stub
    
  }
}
  

Reply via email to