Редактор GWT: дважды выбирайте вызовы перед обновлением - PullRequest
0 голосов
/ 10 декабря 2011

Во время обновления сущность с каркасом редактора дважды выбирает из вызовов БД.Может быть, это не проблема, а особенность фреймворка Editor?

Вот фрагмент кода:

public class UserActivity extends BasicActivity<UserActivity.Display> {

...

interface Driver extends RequestFactoryEditorDriver<UserProxy, UserPanel> {
}

private UserProxy user;

private Driver driver;

@Inject
private Provider<UserRequestContext> userContextProvider;

...

@Inject
public UserActivity(EventBus eventBus, Display display, PlaceController placeController, WmsRequestFactory requestFactory) {

    super(display, eventBus, placeController);

    driver = GWT.create(Driver.class);
    driver.initialize(requestFactory, (UserPanel) display);

}

...

@Override
protected void onBind() {

    UserRequestContext userRequestContext = userContextProvider.get();

    userRequestContext.updateUser(user);

    driver.edit(user, userRequestContext);

    registerHandler(display.getSaveButton().addClickHandler(
            new ClickHandler() {
                public void onClick(ClickEvent event) {

                    RequestContext context = driver.flush();

                    // Check for errors
                    if (driver.hasErrors()) {
                        display.getStatus().setHTML(
                                "<b>Errors detected locally</b>");
                        return;
                    }

                    // Send the request
                    context.fire();

                }
            }));

   ...

Вывод из спящего режима после нажатия кнопки сохранения:

 [INFO] Hibernate: select user0_.ID as ID1_0_, user0_.CREATED as CREATED1_0_, user0_.MODIFIED as MODIFIED1_0_, user0_.version as version1_0_, user0_.BIRTH_DATE
as BIRTH5_1_0_, user0_.EMAIL as EMAIL1_0_, user0_.FIRST_NAME as FIRST7_1_0_, user0_.LAST_NAME as LAST8_1_0_, user0_.LOGIN as LOGIN1_0_, user0_.PASSWORD as PASS
WORD1_0_ from USER user0_ where user0_.ID=?

[INFO] Hibernate: select user0_.ID as ID1_0_, user0_.CREATED as CREATED1_0_, user0_.MODIFIED as MODIFIED1_0_, user0_.version as version1_0_, user0_.BIRTH_DATE
as BIRTH5_1_0_, user0_.EMAIL as EMAIL1_0_, user0_.FIRST_NAME as FIRST7_1_0_, user0_.LAST_NAME as LAST8_1_0_, user0_.LOGIN as LOGIN1_0_, user0_.PASSWORD as PASS
WORD1_0_ from USER user0_ where user0_.ID=?

[INFO] Hibernate: update USER set MODIFIED=?, version=?, BIRTH_DATE=?, EMAIL=?, FIRST_NAME=?, LAST_NAME=?, LOGIN=?, PASSWORD=? where ID=? and version=?

Это нормально?

1 Ответ

0 голосов
/ 12 декабря 2011

Ответ на GWT Google Group: https://groups.google.com/d/msg/google-web-toolkit/T4N1puddcS4/vV1wYZ6n9EUJ

Скопировано здесь для справки и удобства:

Во-первых, это не имеет ничего общего с платформой Editor, но с RequestFactory.

Если вы не используете Locator или не переопределяете метод isLive() вашего Locator, то это ожидаемое поведение: именно так RequestFactory определяет, является ли объект все еще "жив "перед отправкой ответа клиенту.Если это не так, то он сообщит клиенту, что объект был удален (отправьте событие EntityProxyChange на EventBus с WriteOperation.DELETED).Реализация isLive(entity) по умолчанию - find(entity.get()) != null, и это также происходит в отсутствие Locator для сущности (разница в том, что с Locator вы можете переопределить isLive (), чтобы изменить реализацию по умолчаниюс, например, более оптимизированным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...