当我要导航到另一个页面时,我想在闪存中放置一个对象。这就是我现在正在做的事情:
<h:commandLink action="#{bean.foo(object)}">
<h:graphicsImage .../>
</h:commandLink>
和bean方法:
public String foo(Object o) {
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("key", o);
return "target.xhtml?faces-redirect=true";
}
我想在没有bean方法的情况下使用xhtml中的h:链接(也因为我听说commandLink导航很糟糕)。我有这样的想法,以取代上面的代码:
<h:link outcome="target.xhtml">
<h:graphicsImage .../>
<someTag someAttr="#{facesContext.externalContext.flash.put("key", object)}"/>
</h:link>
是否有这样的标签(someTag)可以像这样使用?
答案 0 :(得分:2)
您无法使用h:link
传递GET属性等Flash属性。 ViewParams还不够?这是导航的最佳方式。
但您可以使用c:set
将变量放入闪存范围。问题是如果要在按下链接后动态设置值。
添加名称空间(如果尚未存在)xmlns:c="http://java.sun.com/jsp/jstl/core"
<c:set target="#{flash}" property="key" value="object"/>
<h:link outcome="target.xhtml">
<h:graphicsImage .../>
</h:link>