эквивалент для ограничения, выполнения действия и правила навигации в page.xml (Java EE + JSF 2.0 - из Seam) - PullRequest
2 голосов
/ 01 марта 2012

Я научился создавать веб-приложение с Java и Seam (и JSF 1.2)

Но сейчас я работаю с чистой Java EE 6 и JSF (Mojara 2.0.9) - без какой-либо дополнительной инфраструктуры.

В шве я использовал для index.xhtml index.page.xml для ограничения:

<restrict>#{authorizationManager.isAdmin()}</restrict>

Есть ли такая же функция, как page.xml?

И
Я также использовал index.page.xml, чтобы сделать несколько звонков, таких как:

<action execute="#{indexController.doSomething()}" on-postback="false"/>

Теперь это единственный шанс сделать это с @PostConstruct в контроллере для .xhtml?

Кроме того, как я делаю что-то подобное без page.xml?

<navigation>
    <rule if-outcome="OK">
        <redirect view-id="/pages/index.xhtml" />
    </rule>
</navigation>

Мне кажется, чистый JavaEE работает совершенно иначе?

(вам не нужно присылать мне полный код, просто дайте мне ключевые слова, которые я должен гуглить, спасибо!)

1 Ответ

4 голосов
/ 01 марта 2012

В Seam я использовал для index.xhtml ограничение index.page.xml для:

<restrict>#{authorizationManager.isAdmin()}</restrict>

Есть ли такая же функция, как у страницы.xml?

Стандартный JSF не предлагает никаких встроенных средств аутентификации / авторизации.Все должно использоваться из «сырого» API сервлета или стороннего фреймворка, такого как Spring Security.

Что касается «сырых» возможностей API сервлета, то <security-constraint> в web.xml подходит близко.Вы можете ограничивать только глобальные шаблоны URL, такие как /app/*, но не для отдельных страниц или, возможно, для каждого действия.


Я также использовал index.page.xmlсделать несколько вызовов, таких как:

 <action execute="#{indexController.doSomething()}" on-postback="false"/>

Теперь это единственный шанс сделать это с @PostConstruct в контроллере для .xhtml?

<f:event> на самой странице XHTML приближается:

<f:event type="preRenderView" listener="#{indexController.doSomething}" />

Что касается замены on-postback, проверьте Можно ли отключить f: event type = "preRenderView"слушатель на обратной передаче? .


Также как я делаю что-то подобное без page.xml?

<navigation>
    <rule if-outcome="OK">
        <redirect view-id="/pages/index.xhtml" />
    </rule>
</navigation>

Мне кажется, что чистый JavaEE работает совершенно иначе?

JSF 2.0 поддерживает неявную навигацию, что делает <navigation-rule> в faces-config.xml совершенно лишним.Возвращенный результат будет неявно рассматриваться как идентификатор целевого представления.Вы можете выполнить перенаправление, добавив параметр faces-redirect=true в строку запроса результата.Например,

public String submit() {
    // ...

    return "/pages/index.xhtml?faces-redirect=true";
}

См. Также:

...