Как сгруппировать gwt-вызовы-RPC?

Думая о нескольких вариантах, например таблица, сетка и т. д., но это может быть полезно, если вы хотите остаться с flex, но не хотите ограничиваться фиксированным количеством столбцов.

Если вы можете изменить порядок своего HTML-кода, чтобы заголовки находились в отдельном контейнере с отображением flex, а списки - также в контейнере с отображением flex, который обеспечил бы одинаковую высоту всех заголовков, как: ]

    .column-stack {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-pack: justify;
        justify-content: space-between;
    }

    .column-stack ul {
        flex-grow: 1;
        flex-basis: 1px;
    }

.headers {
  display:flex;
  
}
 .column-header {
        font-size: 12px;
        text-transform: uppercase;
        color: #006a4d;
        font-weight: 500;
        padding-bottom: 5px;
        border-bottom: 1px solid #3a3a3a;
        display: flex;
        align-items: stretch; /* Default */
        justify-content: space-between;
        flex-grow: 1;
        flex-basis: 1px;
        margin: 10px;
 }
<div class="headers">
  <div class="column-header">Header 1 One Line</div>
  <div class="column-header">Header 2 Many Lines of Text this is many lines of text and is the longest column wow it keeps going and going and going like the energizer rabbit</div>
  <div class="column-header">Header 3 Two Line at most on most use cases</div>
</div>

<div class="column-stack">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
</div>

просто не забудьте добавить flex-grow: 1; и flex-basis: 1px;, чтобы ширина была одинаковой

7
задан Alexandre Victoor 17 April 2009 в 21:48
поделиться

4 ответа

GWT не предоставляет решение с одним шагом для пакетной обработки нескольких произвольных RPCs. Однако имейте в виду, что автоматическая сериализация GWT делает довольно легким записать и последовательные и пакетные версии каждого из Ваших методов RPC. Например, предположите определение этого RPC:

FooResponse callFoo(FooRequest request);

Это - это легкое записать "пакетную" версию того же RPC самостоятельно:

ArrayList<FooResponse> batchCallFoo(ArrayList<FooRequest> requests) {
  ArrayList<FooResponse> responses = new ArrayList<FooResponse>();
  for (FooRequest request : requests) {
    responses.add(callFoo(request));
  }
}
1
ответ дан 6 December 2019 в 23:15
поделиться

Это - хороший вопрос, но я не думаю, что существует легкое решение.

Я полагаю, что необходимо будет создать отдельный метод, который группируется методы для достижения пакетной обработки подобным способом к DWR.

Т.е. если Вы имеете:

public int add(int x, int y);
public int sub(int i, int j);

Вы создали бы новый метод для объединения их:

public Map<String, Integer> addAndSub(Map methodsAndArguments) {
    // Call add and sub methods with it's arguments
}

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

Я понимаю, что это не могло бы быть самое изящное решение, но из-за пути GWTs работа RPC, я думаю, что это - способ пойти. С GWT я думаю, что необходимо обычно пытаться записать методы так, чтобы пакетная обработка даже не была проблемой, которую необходимо рассмотреть.

1
ответ дан 6 December 2019 в 23:15
поделиться

Рэй Райан из Google сделал презентацию о лучших методах создания архитектуры вашего GWT-приложения , в которой он рассказал об использовании шаблона команд. Вы, вероятно, захотите отправлять асинхронные команды, которые проходят через RPC. Если вы отправляете команды вместо RPC, их очень легко объединить в пакеты.

См. gwt-dispatch для получения информации о библиотеке, которая реализует этот шаблон для вас. Я только начинаю его использовать, поэтому не знаю, автоматически ли он будет загружаться, но все это с открытым исходным кодом и разрешительной лицензией, так что вы можете исправить это, если это не так.

Вы, вероятно, захотите отправлять асинхронные команды, которые проходят через RPC. Если вы отправляете команды вместо RPC, их очень легко объединить в пакеты.

См. gwt-dispatch для получения информации о библиотеке, которая реализует этот шаблон для вас. Я только начинаю использовать его, поэтому не знаю, будет ли он пакетироваться автоматически, но это все с открытым исходным кодом и разрешительной лицензией, так что вы можете исправить это, если это не так.

Вы, вероятно, захотите отправлять асинхронные команды, которые проходят через RPC. Если вы отправляете команды вместо RPC, их очень легко объединить в пакеты.

См. gwt-dispatch для получения информации о библиотеке, которая реализует этот шаблон для вас. Я только начинаю его использовать, поэтому не знаю, автоматически ли он будет загружаться, но все это с открытым исходным кодом и разрешительной лицензией, так что вы можете исправить это, если это не так.

8
ответ дан 6 December 2019 в 23:15
поделиться

Вы также можете использовать GWTEventService, если ваше приложение вписывается в домен Comet (server-side-push):

GWTEventService - это основанная на событиях структура взаимодействия клиент-сервер. Он использует GWT-RPC и технику Comet / server-push. Клиентская сторона предлагает высокоуровневый API с возможностью регистрации слушателей на сервере, как на компоненте GUI. События могут быть добавлены к контексту/домену на стороне сервера, а слушатели на стороне клиента получают информацию о входящих событиях. Серверная сторона полностью независима от клиентской реализации и является очень настраиваемой.

Потому что одно из преимуществ этой модели событий:

События объединяются для уменьшения количества вызовов сервера

1
ответ дан 6 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: