使用JSF中的h:link访问flash

时间:2017-02-22 13:12:06

标签: jsf el

当我要导航到另一个页面时,我想在闪存中放置一个对象。这就是我现在正在做的事情:

<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)可以像这样使用?

1 个答案:

答案 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>