JSF 1.2: как открыть новое окно и поймать тот факт, что пользователь попробовал это - PullRequest
2 голосов
/ 16 августа 2011

Я хотел бы открыть новое окно браузера со всем скрытым. Также я хотел бы знать, что пользователь инициировал действие и запись в бэкэнде, используя JSF.

Из чтения интернета похоже, что я могу использовать window.open, но тогда JSF полностью обойден. Также я хотел бы передать значение bean-компонента в javascript.

Это несбыточная мечта? Могу ли я сделать это с JSF 1.2? Спасибо

1 Ответ

1 голос
/ 16 августа 2011

Вы можете просто передать его в качестве параметра запроса в URL.

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

Вы можете сделать параметр foo управляемым свойством bean-компонента, связанного со всплывающей страницей.

1007 * Е.Г. *

<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 вызывается после построения бина и управляемой инъекции свойств)

...