Вы можете сделать это с DeltaSpike - просто впрыснуть WindowContext и использование/восстановления независимо окна идентификатор вам нравится с помощью метода activateWindow. После этого область разговора, предоставленная DeltaSpike (@GroupedConversationScoped), может использоваться без дальнейшей инициализации, как описано в документации.
Если у вас есть, например, приложение JSF в сочетании с JSF-модулем DeltaSpike, который отображает идентификатор окна как «dswid», вы можете использовать следующий сервлет-фильтр для восстановления и активации одного и того же окна для любых технологий на основе сервлетов, таких как JAX-RS. .. (не забудьте отобразить для Servlet-Filter).
С JSF не забудьте добавить тег на свой шаблон страницы (как описано в документации). Если вам нужно вручную создать ссылку вы можете получить текущее окно идентификатор с помощью:
dswid=#{dsWindowContext.currentWindowId}
Если вам не нравится использовать «dswid», просто использовать и извлекать информацию, как с любым другим пользовательским параметром (или использовать lib, как prettyfaces/rewrite).
Если вы не используете JSF, вам необходимо визуализировать идентификатор окна самостоятельно и убедиться, что он отправляется обратно на сервер в качестве параметра запроса (как и с любым другим параметром, который вы используете).
В вашем коде, который, наконец, обрабатывает запрос, вы можете просто ввести любой компонент с разбивкой по группам с цепочкой (или выполнить поиск через BeanProvider).
public class WindowIdFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String windowId = request.getParameter("dswid");
if (windowId != null) {
WindowContext windowContext = BeanProvider.getContextualReference(WindowContext.class);
windowContext.activateWindow(windowId);
}
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
Это возможно при использовании разговора боба, но области действия вы должны иметь некоторые правила перезаписи URL в месте, которое преобразует параметр пути в качестве параметра запроса: '' 'чид = conversionid''' и наоборот – maress
@maress спасибо за ваш комментарий, пожалуйста, дайте пример? – Ikthiander
FYI: Если бы вы запросили в списке рассылки для DeltaSpike, вы бы увидели ответ в течение нескольких часов. –