【问题标题】:Access flash with h:link in JSF在 JSF 中使用 h:link 访问 flash
【发布时间】:2017-02-22 13:12:06
【问题描述】:

当我要导航到另一个页面时,我想在 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";
}

我想在没有 bean 方法的情况下使用 xhtml 中的 h:link 来做到这一点(也因为我听说 commandLink 导航很糟糕)。我有这样的想法,要替换上面的代码:

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

有这样的标签(someTag)可以这样使用吗?

【问题讨论】:

    标签: jsf el


    【解决方案1】:

    您不能通过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>
    

    【讨论】:

    • 那个 c:set 看起来很有希望。我不能把它放在 h:link 中,以便在我点击链接时执行它吗?
    • 可以,但它是在页面加载时触发的,而不是在点击链接后触发的。
    猜你喜欢
    • 2012-05-30
    • 2011-07-31
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多