我有一个JSF/Seam页面,并添加了一个新的非HTML界面。我重用了业务逻辑,所以StatusMessages.instance().add到处都用。
是否有一种默认方法可以从 Java 访问和处理此状态消息,或者我是否必须扩展基类并传递受保护的消息列表?
感谢
编辑:
StatusMessages.instance().add(Severity.ERROR, "Please enter a username.");
FacesMessages没有返回他自己的消息列表(我在调试器中看到的条目)(FacesMessages.instance()与StatusMessages.instance()是同一个对象)
FacesMessages.instance().getCurrentMessages();
它正在称呼这个
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
优先级,这将在所有StatusMessages.instance()
中自动使用。