Jsf 2 使用Flash从servlet或JAX-RS重定向后显示FacesMessage
我想通过servlet或JAX-RS实现激活链接(不重要是哪一个),然后将用户重定向到正确的页面,给他留下一条存储在Flash中的FacesMessage。重定向本身没有问题,但是我不知道如何访问Flash。您可以从Jsf 2 使用Flash从servlet或JAX-RS重定向后显示FacesMessage,jsf-2,Jsf 2,我想通过servlet或JAX-RS实现激活链接(不重要是哪一个),然后将用户重定向到正确的页面,给他留下一条存储在Flash中的FacesMessage。重定向本身没有问题,但是我不知道如何访问Flash。您可以从外部上下文获得对Flash对象的访问: 获取对闪存的访问权限: Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash(); 在对象上设置keepMessages=true,以确保
外部上下文获得对Flash
对象的访问:
获取对闪存的访问权限
:
Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
在对象上设置keepMessages=true
,以确保存储在其中的FacesMessage
在重定向后仍然有效
flash.setKeepMessages(true);
使用putNow
方法存储您的FacesMessages
,以确保即使在重定向之后,这些消息仍能在至少一次页面刷新后存活
flash.putNow(yourFacesMessage);
你真的不需要将FacesMessage
存储在flash对象本身中;在FacesContext
中对它们进行排队就足以保证它们在另一个页面上可用
相关的:
您确定它应该在servlet中工作吗?我在ExternalContext ec=facesContext.getExternalContext()处获得NPE代码>facesContext
通过facesContext.getCurrentInstance()获得代码>@Guest您的问题在这方面不清楚;您应该声明您正在尝试检索servlet中的Flash
对象。在这种情况下,我建议不要这样做。只需将消息存储为请求属性并在目标支持bean中检索即可。如果您坚持使用flash对象,请使用来检索FacesContext
并获取flash对象