2

我想打开一个新的浏览器窗口,隐藏所有内容。另外我想知道用户已经使用 JSF 在后端启动了操作和记录。

从阅读互联网,看起来我可以使用 window.open 但 JSF 完全被绕过了。此外,我还想将 bean 的值传递给 javascript。

这是白日梦吗?我可以用 JSF 1.2 来做吗?谢谢

4

1 回答 1

1

您可以将其作为 URL 上的请求参数传递。

<h:outputLink value="#" onclick="window.open('popup.jsf?foo=#{bean.foo}');">
    popup
</h:outputLink>

您可以将foo参数作为与弹出页面关联的 bean 的托管属性。

例如

<managed-property>
    <property-name>foo</property-name>
    <value>#{param.foo}</value>
</managed-property>

public class PopupBean {

    private String foo;

    @PostConstruct
    public void init() throws IOException {
        doSomethingWith(foo);
        youCouldLogHereAsWellThatPopupIsBeenOpened();
        FacesContext.getCurrentInstance().getExternalContext().redirect("http://other.com/report");
    }

    // ...
}

(该@PostConstruct方法在 bean 的构造和托管属性注入之后调用)

于 2011-08-15T23:47:21.157 回答