Получи Spring MessageContext - PullRequest
       93

Получи Spring MessageContext

3 голосов
/ 08 июня 2011

Как получить Spring MessageContext из класса Java?

Должен ли я использовать некоторые @Resource или @Autowire для внедрения context var в класс или, например, для использования некоторого глобального контекста SpringContext или другого для получения MessageContext.

Что такое подход?

Ответы [ 3 ]

4 голосов
/ 08 июня 2011

Если я правильно понимаю, вы используете Spring Webflow с JSF и вам нужен доступ к Webflow MessageContext изнутри JSF ActionListener ?

Если это так, вы всегда можетеиспользуйте RequestContextHolder (следите за тем, чтобы использовать его из Webflow, поскольку Spring MVC имеет его!), но он использует ThreadLocal, поэтому он не слишком элегантен:

MessageContext messageContext = 
    RequestContextHolder.getRequestContext().getMessageContext();

Выне может использовать стандартный DI, так как MessageContext создается для каждого запроса FlowExecutor при каждом запуске или возобновлении потока, используя MessageSource.

3 голосов
/ 08 июня 2011

Я бы начал с чтения стандартного метода для этого и попробовал бы это:

@Resource WebServiceContext wsContext;

@WebMethod public String echoHello(String msg) {
    MessageContext context = wsContext.getMessageContext();

    ...
}

Вот как это сделать на стороне сервера.На стороне клиента контексты запроса и ответа - это просто простые карты, которые вы извлекаете из заглушки службы (которая будет реализовывать BindingProvider, даже если вы явно не запрашиваете ее);им не нужно управление областью, которое добавляет MessageContext.

0 голосов
/ 18 октября 2013

в вашем файле flow.xml добавьте сообщениеContext следующим образом:

   <transition on="search">
     <evaluate expression="service.search(service.id, messageContext)" result="scope" />
   </transition>`

в вашем Service.java вы можете использовать messageContext сейчас.

public List search(String serviceId, MessageContext messageContext) {       
  ...       
  messageContext.addMessage(
  ...
}
...