我想打开一个新的浏览器窗口,隐藏所有内容。另外我想知道用户已经使用 JSF 在后端启动了操作和记录。
从阅读互联网,看起来我可以使用 window.open 但 JSF 完全被绕过了。此外,我还想将 bean 的值传递给 javascript。
这是白日梦吗?我可以用 JSF 1.2 来做吗?谢谢
我想打开一个新的浏览器窗口,隐藏所有内容。另外我想知道用户已经使用 JSF 在后端启动了操作和记录。
从阅读互联网,看起来我可以使用 window.open 但 JSF 完全被绕过了。此外,我还想将 bean 的值传递给 javascript。
这是白日梦吗?我可以用 JSF 1.2 来做吗?谢谢
您可以将其作为 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 的构造和托管属性注入之后调用)