Получение нескольких выпадающих значений с использованием одного вызова json из базы данных

У меня есть требование, когда я должен заполнить несколько раскрывающихся списков значениями, которые будут извлечены из базы данных. Я использую структуру struts2 и вызываю действие json, которое возвращает тип json. Но проблема здесь в том, что для каждого раскрывающегося списка мне приходилось писать отдельное действие, которое вызывает много разных вызовов в БД.

Можно ли сделать это в одном вызове действия json, чтобы все необходимые значения можно было получить, используя только одно действие json, и значения будут соответственно заполнены в раскрывающихся списках.

В настоящее время то, что я делаю, выглядит так, что работает нормально, но я ищу решение (если оно существует), где нам не понадобятся эти многочисленные вызовы <s:url/>.

<s:url var="fillA" action="fillA" />
<sj:select id="dropdownA" href="%{fillA}" list="listA"/>

<s:url var="fillB" action="fillB" />
<sj:select id="dropdownB" href="%{fillB}" list="listB"/>

<s:url var="fillC" action="fillC" />
<sj:select id="dropdownC" href="%{fillC}" list="listC"/>

person Gaurav Parek    schedule 16.09.2015    source источник
comment
Даже с одним действием вам понадобятся три разных запроса (если не делать цирк), поэтому преимущество будет заключаться в том, чтобы избежать открытия/закрытия соединения (разве оно не объединено?). В таком случае я предлагаю кэш, для каждого пользователя или для каждого приложения с @Singleton в соответствии со спецификациями вашего проекта (количество пользователей, количество данных, количество одновременных подключений и т. д.).   -  person Andrea Ligios    schedule 16.09.2015
comment
Если вам абсолютно необходимо избегать нескольких запросов, я бы объединил их в одно действие, которое возвращает объект JSON, содержащий каждый из результирующих объектов, созданных вашими тремя исходными методами. Кроме того, не будут ли три отдельных тега <sj:select> автоматически выполнять три отдельных запроса, даже если они указывают на один и тот же URL-адрес?   -  person Shotgun Ninja    schedule 16.09.2015
comment
@AndreaLigios спасибо.   -  person Gaurav Parek    schedule 19.09.2015
comment
AFAIR sj; select предварительно выбирает эти значения в ответе, но если вы используете опцию автозаполнения, то для каждого ответа делается много запросов XHR. Если это один ресурс, который может быть получен одним запросом XHR, но если это разные источники, то вы ничего не можете с ним сделать, браузер обрабатывает ситуации, используя заголовки управления кешем.   -  person Roman C    schedule 24.09.2015
comment
@AndreaLigios: я изучил, и для нашего требования было бы лучше иметь кеш для каждого приложения, я не реализовал кеширование раньше, если бы вы могли предоставить какую-либо ссылку или пример для такой реализации, это было бы полезно для меня.   -  person Gaurav Parek    schedule 06.10.2015
comment
@GauravParek вам очень повезло. Не стесняйтесь голосовать за вопрос и/или ответ.   -  person Andrea Ligios    schedule 06.10.2015