JSF инициализируют боб области действия приложения, когда контекст инициализировал

Мы можем использовать rep или gl для создания группирующей переменной

library(dplyr)
my.df %>% 
    group_by(grp = as.integer(gl(n(), 5, n()))) %>% 
    #or with rep
    # group_by(grp = rep(row_number(), length.out = n(), each = 5)) 
    summarise(sum = sum(y), mean = mean(y))
# A tibble: 2 x 3
#    grp   sum  mean
#  <int> <dbl> <dbl>
#1     1   174  34.8
#2     2   211  42.2
16
задан Matt McMinn 24 November 2008 в 18:57
поделиться

2 ответа

Если Ваш код будет звонить FacesContext, то он не будет работать вне потока, связанного с жизненным циклом запроса JSF. Объект FacesContext создан для каждого запроса и расположен в конце запроса. Причина можно выбрать его через статический вызов , состоит в том, потому что это установлено на ThreadLocal в начале запроса. Жизненный цикл FacesContext не переносит отношения к тому из ServletContext.

, Возможно, это не достаточно (это кажется, что Вы уже снизились на этот маршрут), но необходимо смочь использовать ServletContextListener, чтобы сделать то, что Вы хотите. Просто удостоверьтесь, что любые вызовы к FacesContext сохранены в потоке запроса JSP.

web.xml:

<listener>
    <listener-class>appobj.MyApplicationContextListener</listener-class>
</listener>

Реализация:

public class MyApplicationContextListener implements ServletContextListener {

    private static final String FOO = "foo";

    public void contextInitialized(ServletContextEvent event) {
        MyObject myObject = new MyObject();
        event.getServletContext().setAttribute(FOO, myObject);
    }

    public void contextDestroyed(ServletContextEvent event) {
        MyObject myObject = (MyObject) event.getServletContext().getAttribute(
                FOO);
        try {
            event.getServletContext().removeAttribute(FOO);
        } finally {
            myObject.dispose();
        }
    }

}

можно обратиться к этому объекту через область действия приложения JSF (или просто непосредственно, если никакая другая переменная не существует с тем же именем):

<f:view>
    <h:outputText value="#{applicationScope.foo.value}" />
    <h:outputText value="#{foo.value}" />
</f:view>

, Если Вы хотите получить объект в управляемом компоненте JSF, можно получить его от ExternalContext:

FacesContext.getCurrentInstance()
            .getExternalContext().getApplicationMap().get("foo");
14
ответ дан 30 November 2019 в 22:55
поделиться

Используя слушателей или загрузку на запуск, попробуйте это: http://www.thoughtsabout.net/blog/archives/000033.html

0
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: