从Java读取JSF Seam状态消息

从Java读取JSF Seam状态消息,jsf,seam,Jsf,Seam,我有一个JSF/Seam页面,并添加了一个新的非HTML界面。我重用了业务逻辑,因此StatusMessages.instance().add到处都在使用 是否有从Java访问和处理此StatusMessages的默认方法,或者我必须扩展基类并传递受保护的消息列表 thx 编辑: StatusMessages.instance().add(Severity.ERROR, "Please enter a username."); FacesMessages没有返回自己的消息列表(我在调试器中看到

我有一个JSF/Seam页面,并添加了一个新的非HTML界面。我重用了业务逻辑,因此StatusMessages.instance().add到处都在使用

是否有从Java访问和处理此StatusMessages的默认方法,或者我必须扩展基类并传递受保护的消息列表

thx

编辑:

StatusMessages.instance().add(Severity.ERROR, "Please enter a username.");
FacesMessages没有返回自己的消息列表(我在调试器中看到了该条目)(FacesMessages.instance()与StatusMessages.instance()是同一个对象)

它叫这个

FacesContext.getCurrentInstance().getMessages();

这将返回一个空迭代器。

StatusMessages
是一种抽象,用于以不依赖于所使用的视图技术的方式处理消息

此抽象的默认实现是
org.jboss.seam.faces.FacesMessages
。这包含在Seam中,用于JSF

如果您使用另一种视图技术重用业务逻辑,则可以提供特定的
StatusMessages
实现。事实上,这就是为什么这是一个抽象

@Scope(ScopeType.CONVERSATION)
@Name(StatusMessages.COMPONENT_NAME)
@Install(precedence=APPLICATION)
@BypassInterceptors
public class NonHtmlMessages extends StatusMessages
{
  /// implement here you message handling

由于
@Install
优先级,这将自动在所有
状态消息中使用。instance()

我的错误,google没有帮助,但在类型层次结构中查找有助于找到类FacesMessages。ok FacesMessages字段消息包含我添加的2条消息,但是当我尝试访问它们时,会调用FacesContext.getCurrentInstance().getMessages(),并且不会返回任何消息。代码是什么?我做上述两项陈述。我发布了一条statusmessage,然后我想读取所有这些消息。我使用反射来访问受保护的方法“getMessages()”。在您的示例中,我必须删除(preference=APPLICATION),因为他找不到它,但它仍然是默认值。我扩展了FacesMessages,只是添加了getMessages()作为公共方法。这也行得通,至少我现在可以跳过反思了。但是无论如何都会很有趣为什么FacesContext.getCurrentInstance().getMessages()返回一个空的迭代器,如果你知道的话。我不知道为什么你发现迭代器是空的,对不起。有一次我试图在WebSphere上操作FacesContext中的FacesMessages,但很快我就放弃了。我认为它的工作方式很大程度上取决于JSF实现。
@Scope(ScopeType.CONVERSATION)
@Name(StatusMessages.COMPONENT_NAME)
@Install(precedence=APPLICATION)
@BypassInterceptors
public class NonHtmlMessages extends StatusMessages
{
  /// implement here you message handling