JSF, Spring и PreRenderViewEvent - PullRequest
       0

JSF, Spring и PreRenderViewEvent

1 голос
/ 27 июля 2011

Я пытаюсь интегрировать Spring 3 в проект JSF 2.Я зарегистрировал SpringBeanFacesELResolver в face-config.xml и добавил двух слушателей в файл web.xml:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

Большинство представлений и вспомогательных компонентов работают, но, к сожалению,javax.faces.event.PreRenderViewEvent перестал функционировать.Я использовал это событие для вызова метода в компоненте поддержки перед обработкой представления:

<ui:define name="metadata">
    <f:event type="javax.faces.event.PreRenderViewEvent"
        listener="#{locationBean.preRenderView}" />
</ui:define>

При наличии Spring 3 для создания компонента метод preRenderView больше не вызывается.Я был бы очень признателен за любую подсказку о том, что я могу делать неправильно или пропустить!

Обновление:

В том же виде я пытаюсь связать параметрк свойству бэк-бина, как это:

<ui:define name="metadata">
    <f:metadata>
        <f:viewParam name="id" value="#{locationBean.id}" label="id" />
    </f:metadata>
</ui:define>

Это также используется для работы с использованием "чистого" JSF 2, но не может ничего сделать с помощью Spring.

1 Ответ

2 голосов
/ 27 июля 2011

Это не совсем связано с пружиной, но, насколько я знаю, тег f:metadata должен содержаться внутри клиента шаблона и вставляться непосредственно в f:view. Пример можно найти по адресу JSFAtWork . Ссылка на немецком языке, но я надеюсь, что примеры кода понятны.

Ваш код должен выглядеть следующим образом

<ui:define name="metadata">
    <f:metadate>
        <f:event type="javax.faces.event.PreRenderViewEvent"
            listener="#{locationBean.preRenderView}" />
    </f:metadate>
</ui:define>

со следующим шаблоном

<f:view>
    <ui:insert name="metadata"/>
    ...
</f:view>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...