2017-02-22 53 views
0

当我要导航到另一个页面时,我想将对象放入Flash中。这是我正在做的那一刻:在JSF中使用h:链接访问flash

<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"; 
} 

我想这样做与H:在XHTML链接没有一个bean的方法(也因为我听说commandLink导航不好)。我有这样的想法,以取代上面的代码:

<h:link outcome="target.xhtml"> 
    <h:graphicsImage .../> 
    <someTag someAttr="#{facesContext.externalContext.flash.put("key", object)}"/> 
</h:link> 

是否有这样的标签(someTag),可以这样使用?

回答

2

您无法将类似GET属性的Flash属性与h:link一起传递。 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> 
+0

C:盘设置的东西看起来很有希望。我不能只是把它放在h:链接中,当我点击链接时它会被执行吗? – user1785730

+0

你可以,但它是在页面加载时触发的,而不是点击链接后触发的。 – jklee