获取Spring MessageContext

时间:2011-06-08 08:29:15

标签: spring get message

如何从Java类中获取Spring MessageContext

我应该使用一些@Resource@Autowirecontext var注入类,或者,例如,使用一些全局上下文SpringContext或其他一些来获取{{1} }。

什么是方法?

3 个答案:

答案 0 :(得分:4)

如果我理解正确您正在使用带有JSF的Spring Webflow,并且需要从JSF MessageContext中访问Webflow ActionListener

如果是这样你可以随时使用RequestContextHolder(注意使用Webflow中的那个,因为Spring MVC拥有它!),但它使用ThreadLocal所以它不太优雅:

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

您无法使用标准DI,因为MessageContext是使用FlowExecutor在每个流程开始或简历上由MessageSource根据每个请求创建的。{/ p>

答案 1 :(得分:3)

我首先阅读standard method of doing this is并尝试:

@Resource WebServiceContext wsContext;

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

    ...
}

这是在服务器端如何做到的。在客户端,请求和响应上下文只是您从服务存根中检索的简单映射(即使您没有明确要求,也将实现BindingProvider);他们不需要MessageContext添加的范围管理。

答案 2 :(得分:0)

在你的flow.xml中添加一个messageContext,如下所示:

   <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(
  ...
}